Transcript
Page 1: 10-sıralama algoritmaları

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ı

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ı

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ı

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ı

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ı

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ı

7

Seçme sıralama (selection sort) algoritması

4.adım

17

30

32

51

53

Page 8: 10-sıralama algoritmaları

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ı

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ı

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ı

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ı

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ı

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ı

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ı

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ı

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ı

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ı

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ı

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ı

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ı

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ı

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ı

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ı

24

Kabarcık sıralama (bubble sort) algoritması

1

2

3

4

5

Page 25: 10-sıralama algoritmaları

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ı

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ı

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ı

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.


Top Related