Download - 10-sıralama algoritmaları
![Page 1: 10-sıralama algoritmaları](https://reader034.vdocuments.net/reader034/viewer/2022052522/55331b9f4a7959de518b4857/html5/thumbnails/1.jpg)
1
Sıralama Algoritmaları
• Birçok uygulamada veri dizilerinin, belirli sırada olması istenir. Veriler sayısal ise küçükten büyüğe veya büyükten küçüğe, alfa sayısal ise A’dan Z’ ye veya Z’ den A’ ya doğru sıralanabilir.
• Sıralı veriler üzerinde işlem/değerlendirme yapmak çok daha hızlı ve kolaydır.
• Günümüz bilgisayarlarında kullanılan algoritmaların önemli bir bölümünün sıralama algoritmalarına gereksinim duyması sıralama algoritmalarının önemini ortaya koymaktadır.
• Günlük hayattan örnek olarak, hayatın her alanında kullanılan veritabanlarının düzenlenmesi, güncellenmesi ve arama işlemlerinin çok hızlı yapılabilmesi için veri alanlarının doğru bir biçimde sıralanması gereklidir.
![Page 2: 10-sıralama algoritmaları](https://reader034.vdocuments.net/reader034/viewer/2022052522/55331b9f4a7959de518b4857/html5/thumbnails/2.jpg)
2
Sıralama Algoritmaları
• Aynı sıralama probleminin çözümünde farklı araştırmacılar tarafından ortaya konmuş çeşitli sıralama algoritmaları mevcuttur.
• Bunların her birinin diğerlerine kıyasla kullanım alanına göre üstünlükleri ve eksik yönleri olmaktadır.
• Çoklu veriler içerisinde, istenilen bilgiyi aramak programlarda en sık karşılaşılan işlemlerden biridir. Herhangi bir veri yığınında, ilgili bilgiye ulaşmak için değişik algoritmalar kullanılır.
• Bu bölümde birkaç popüler sıralama ve arama algoritması anlatılacak ve dizilerde kullanımı gösterilecektir.
• Dizilerde sıralama ve arama algoritmaları aşağıda gösterimleri sayısal değerler üzerinden yapılmasına rağmen, hem sayısal hem de alfa sayısal bilgiler için aynı şekilde çalışır.
![Page 3: 10-sıralama algoritmaları](https://reader034.vdocuments.net/reader034/viewer/2022052522/55331b9f4a7959de518b4857/html5/thumbnails/3.jpg)
3
Seçme sıralama (selection sort) algoritması
• Seçme sıralama (selection sort) en basit sıralama algoritmalarındandır.
• Dizideki ilk elemandan başlanır. Seçilen dizi elemanı ile bu elemandan sonra gelen dizi elemanları sırası ile karşılaştırılır. Eğer küçüklük/büyüklük (sıralama isteğine bağlı olarak) durumu var ise yerleri değiştirilir.
• İkinci etapta dizinin ikinci elemanı ile bu elemandan sonra gelen dizi elemanları sırası ile karşılaştırılır ve aynı şekilde eğer küçüklük/büyüklük durumu var ise yerleri değiştirilir.
• Bu karşılaştırma işlemi sondan bir önceki eleman ile son elemanın karşılaştırılmasına kadar devam eder ve aynı şekilde eğer küçüklük/büyüklük durumu var ise yerleri değiştirilir.
![Page 4: 10-sıralama algoritmaları](https://reader034.vdocuments.net/reader034/viewer/2022052522/55331b9f4a7959de518b4857/html5/thumbnails/4.jpg)
4
Örnek:a[i]={30,51,32,17,53}
1. adım
30 30 30 17
51 51 51 51
32 32 32 32
17 17 17 30
53 53 53 53
►
![Page 5: 10-sıralama algoritmaları](https://reader034.vdocuments.net/reader034/viewer/2022052522/55331b9f4a7959de518b4857/html5/thumbnails/5.jpg)
5
Seçme sıralama (selection sort) algoritması
2. adım
17 17 17
51 32 30
32 51 51
30 30 32
53 53 53
►
![Page 6: 10-sıralama algoritmaları](https://reader034.vdocuments.net/reader034/viewer/2022052522/55331b9f4a7959de518b4857/html5/thumbnails/6.jpg)
6
Seçme sıralama (selection sort) algoritması
3.adım
17 17
30 30
51 32
32 51
53 53
►
![Page 7: 10-sıralama algoritmaları](https://reader034.vdocuments.net/reader034/viewer/2022052522/55331b9f4a7959de518b4857/html5/thumbnails/7.jpg)
7
Seçme sıralama (selection sort) algoritması
4.adım
17
30
32
51
53
►
![Page 8: 10-sıralama algoritmaları](https://reader034.vdocuments.net/reader034/viewer/2022052522/55331b9f4a7959de518b4857/html5/thumbnails/8.jpg)
8
Seçme sıralama (selection sort) algoritması
• for(i=1;i<n;i++)• {for(j=i+1;j<=n;j++)• {if(A[j]<A[i]) • {b=A[i]; A[i]=A[j]; A[j]=b;}
• }• }
![Page 9: 10-sıralama algoritmaları](https://reader034.vdocuments.net/reader034/viewer/2022052522/55331b9f4a7959de518b4857/html5/thumbnails/9.jpg)
9
Seçme sıralama (selection sort) algoritması
• Küçükten büyüğe doğru sıralama yapan seçme sıralama (selection sort) algoritması için akış diyagramını çizelim;
![Page 10: 10-sıralama algoritmaları](https://reader034.vdocuments.net/reader034/viewer/2022052522/55331b9f4a7959de518b4857/html5/thumbnails/10.jpg)
10
Seçme sıralama (selection sort) algoritması
C/C++ Programı;
#include <stdio.h>
#include <conio.h>
int i,j,n,b;
int A[100];
void main(void)
{clrscr();
printf("dizi eleman sayisi:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{ printf("A[%d]: ",i);
scanf("%d",&A[i]);
printf(" \n"); }
![Page 11: 10-sıralama algoritmaları](https://reader034.vdocuments.net/reader034/viewer/2022052522/55331b9f4a7959de518b4857/html5/thumbnails/11.jpg)
11
Seçme sıralama (selection sort) algoritması
for(i=1;i<n;i++)
{for(j=i+1;j<=n;j++)
{if(A[j]<A[i])
{b=A[i];
A[i]=A[j];
A[j]=b;}
}
}
![Page 12: 10-sıralama algoritmaları](https://reader034.vdocuments.net/reader034/viewer/2022052522/55331b9f4a7959de518b4857/html5/thumbnails/12.jpg)
12
Seçme sıralama (selection sort) algoritması
• for(i=1;i<=n;i++)• { printf("%d ",A[i]);} • printf(" \n");• getch();• }
![Page 13: 10-sıralama algoritmaları](https://reader034.vdocuments.net/reader034/viewer/2022052522/55331b9f4a7959de518b4857/html5/thumbnails/13.jpg)
13
Algoritma karmaşıklığı Seçme sıralama (selection sort)
• 1. Adımda n-1 karşılaştırma
• 2. adımda n-2 karşılaştırma
• 3. adımda n-3 karşılaştırma
• :
• :
• N-1. adımda 1 karşılaştırma
![Page 14: 10-sıralama algoritmaları](https://reader034.vdocuments.net/reader034/viewer/2022052522/55331b9f4a7959de518b4857/html5/thumbnails/14.jpg)
14
Algoritma karmaşıklığı Seçme sıralama (selection sort)
)(
2
1
2
1
2
*)1(
2
2
1
1
nO
nn
nni
n
i
![Page 15: 10-sıralama algoritmaları](https://reader034.vdocuments.net/reader034/viewer/2022052522/55331b9f4a7959de518b4857/html5/thumbnails/15.jpg)
15
Algoritma karmaşıklığı Seçme sıralama (selection sort)
• Seçmeli sıralama algoritması, dizi sıralı bir dizi olsa bile dizinin tüm elemanları üzerinden işletilmektedir.
![Page 16: 10-sıralama algoritmaları](https://reader034.vdocuments.net/reader034/viewer/2022052522/55331b9f4a7959de518b4857/html5/thumbnails/16.jpg)
16
Kabarcık sıralama (bubble sort) algoritması
• Bu algoritma başlangıçta yer değiştirme(exchange) sıralaması olarak adlandırılmıştır. Günümüzde kabarcık sıralaması olarak adlandırılmasının nedeni dizi içindeki büyük elemanların algoritmanın her adımında dizi sonuna doğru lineer olarak ilerlemesidir.
• Bu algoritmada baştan sona doğru yapılan taramalar ile arka arkaya gelen (ardışık) elemanlar kıyaslanır. Eğer küçüklük/büyüklük durumu var ise yerleri değiştirilir.
![Page 17: 10-sıralama algoritmaları](https://reader034.vdocuments.net/reader034/viewer/2022052522/55331b9f4a7959de518b4857/html5/thumbnails/17.jpg)
17
Kabarcık sıralama (bubble sort) algoritması
• Küçükten büyüğe doğru sıralama yapan kabarcık sıralama (bubble sort) algoritması için akış diyagramını çizelim;
![Page 18: 10-sıralama algoritmaları](https://reader034.vdocuments.net/reader034/viewer/2022052522/55331b9f4a7959de518b4857/html5/thumbnails/18.jpg)
18
Kabarcık sıralama (bubble sort) algoritması
• Bu sıralama algoritmasının C/C++ Programı;
#include <stdio.h>
#include <conio.h>
int i,j,n,b;
int A[100];
void main(void)
{ clrscr();
printf("dizi eleman sayisi:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{ printf("A[%d]: ",i);
scanf("%d",&A[i]);
printf(" \n"); }
![Page 19: 10-sıralama algoritmaları](https://reader034.vdocuments.net/reader034/viewer/2022052522/55331b9f4a7959de518b4857/html5/thumbnails/19.jpg)
19
Kabarcık sıralama (bubble sort) algoritması
Bu sıralama algoritmasının C/C++ Programı;
for(i=1;i<=n;i++)
{ for(j=1;j<n;j++)
{ if(A[j+1]<A[j])
{ b=A[j];
A[j]=A[j+1];
A[j+1]=b;}
}
}
for(i=1;i<=n;i++)
{ printf("%d ",A[i]);
}
printf(" \n");
getch();
}
![Page 20: 10-sıralama algoritmaları](https://reader034.vdocuments.net/reader034/viewer/2022052522/55331b9f4a7959de518b4857/html5/thumbnails/20.jpg)
20
Örnek: a[i]={5,4,3,2,1}
1. Adım
5 4 4 4 4
4 5 3 3 3
3 3 5 2 2
2 2 2 5 1
1 1 1 1 5
![Page 21: 10-sıralama algoritmaları](https://reader034.vdocuments.net/reader034/viewer/2022052522/55331b9f4a7959de518b4857/html5/thumbnails/21.jpg)
21
Kabarcık sıralama (bubble sort) algoritması
2. Adım
4 3 3 3
3 4 2 2
2 2 4 1
1 1 1 4
5 5 5 5
![Page 22: 10-sıralama algoritmaları](https://reader034.vdocuments.net/reader034/viewer/2022052522/55331b9f4a7959de518b4857/html5/thumbnails/22.jpg)
22
Kabarcık sıralama (bubble sort) algoritması
3. Adım
3 2 2
2 3 1
1 1 3
4 4 4
5 5 5
![Page 23: 10-sıralama algoritmaları](https://reader034.vdocuments.net/reader034/viewer/2022052522/55331b9f4a7959de518b4857/html5/thumbnails/23.jpg)
23
Kabarcık sıralama (bubble sort) algoritması
4.Adım
2 1
1 2
3 3
4 4
5 5
![Page 24: 10-sıralama algoritmaları](https://reader034.vdocuments.net/reader034/viewer/2022052522/55331b9f4a7959de518b4857/html5/thumbnails/24.jpg)
24
Kabarcık sıralama (bubble sort) algoritması
1
2
3
4
5
![Page 25: 10-sıralama algoritmaları](https://reader034.vdocuments.net/reader034/viewer/2022052522/55331b9f4a7959de518b4857/html5/thumbnails/25.jpg)
25
Kabarcık sıralama (bubble sort) algoritması
• Bu örnekte 5 elemanlı ve ters sıralı bir dizinin 4 adımda sıralandığı görülmüştür.
• 1. adım:4 karşılaştırma ve 4 yerdeğiştirme
• 2. adım:3 karşılaştırma ve 3 yerdeğiştirme
• 3. adım:2 karşılaştırma ve 2 yerdeğiştirme
• 4. adım:1 karşılaştırma ve 1 yerdeğiştirme
![Page 26: 10-sıralama algoritmaları](https://reader034.vdocuments.net/reader034/viewer/2022052522/55331b9f4a7959de518b4857/html5/thumbnails/26.jpg)
26
(Bubble sort) Algoritma karmaşıklığı
• En kötü durumda • 1. Adımda n-1 karşılaştırma• 2. adımda n-2 karşılaştırma• 3. adımda n-3 karşılaştırma• :• :• N-1. adımda 1 karşılaştırma
![Page 27: 10-sıralama algoritmaları](https://reader034.vdocuments.net/reader034/viewer/2022052522/55331b9f4a7959de518b4857/html5/thumbnails/27.jpg)
27
(Bubble sort) Algoritma karmaşıklığı
)(
2
1
2
1
2
*)1(
2
2
1
1
nO
nn
nni
n
i
![Page 28: 10-sıralama algoritmaları](https://reader034.vdocuments.net/reader034/viewer/2022052522/55331b9f4a7959de518b4857/html5/thumbnails/28.jpg)
28
Özet
• Seçmeli Sıralama ve Kabarcık sıralama Algoritmaları işleyiş bakımından basit algoritmalar olmasına karşılık karmaşıklık düzeyi n2 mertebesindedir.
• Veri sayısındaki 5 kat arışa karşılık bu algoritmalardaki yapılan temel işlem sayıları 25 katlık bir artış göstermektedir.
• Veri sayısının az olduğu uygulamalarda kullanılabilir.