Örnekle C'de Ekleme Sıralaması Nasıl Uygulanır?

Ornekle C De Ekleme Siralamasi Nasil Uygulanir



'Ekleme Sıralaması' olarak bilinen sıralama algoritması, basit ve küçük veri kümeleri için etkilidir. Elemanları bir dizi boyunca döngüye sokarak düzenleyen, her bir elemanı kendisinden önce gelenlere göre değerlendiren ve gerekirse değiş tokuş eden, karşılaştırmaya dayalı bir yöntemdir. Bu gönderide, ekleme sıralamasının C dilinde nasıl uygulanacağına dair bir örnek üzerinde duracağız.

C'de Ekleme Sıralaması nedir?

Ekleme sıralama adı verilen sıralama yöntemi, bir dizi boyunca yinelenirken her bir öğeyi bitişik olanlarla eşleştirir. Sıralanmış alt diziye uygun konumda bir öncekinden daha küçük bir öğe eklenir.

Daha fazla açıklamak için, bir dizideki dört öğeden oluşan bir diziyi düşündüğüm bir örnek gösterdim. dizi[]= {5, 4, 60, 9} ve ekleme sıralaması kullanarak bu öğeyi artan düzende sıralamak istiyoruz. Aşağıdaki etkileşimler, ekleme sıralamasının tam kuru çalışmasını açıklar:







Yineleme 1

5 4 60 9

Şimdi arr[5, 4, 60, 9] şeklinde bir dizimiz var, ekleme sıralamasının ilk yinelemesinde önce 5 ve 4 gibi ilk iki elemanı karşılaştırıyoruz, arr[5] > arr[4] olduğu için yani diziyi artan düzende sıralamak için onları değiştiririz. Şimdi, dizi şöyle olacak:



4 5 60 9

Yineleme 2

4 5 60 9

İkinci yinelemede, dizi[5] ile dizi[60] gibi sonraki iki öğeyi karşılaştırırız.



arr[5] < arr[60] olduğundan, zaten artan düzende sıralandığı için takas gerçekleşmez. Şimdi, dizi şöyle olur:





4 5 60 9

Yineleme 3

4 5 60 9

Üçüncü iterasyonda olduğu gibi arr[60] gibi üçüncü ve dördüncü elemanları arr[9] ile eşleştiriyoruz.

Şimdi, arr[60] > arr[9] olduğunu görüyoruz, böylece takas gerçekleşiyor, ardından dizi artan düzende sıralanacak.



4 5 9 60

Bir dizi öğesini kolayca artan veya azalan düzende sıralayan C'de ekleme sıralaması bu şekilde çalışır.

Ekleme Sıralamanın Akış Şeması

Ekleme sıralama algoritmasının akış şeması aşağıdadır:

C'de Ekleme Sıralaması Uygulama Örneği

C'de eklemeli sıralama yöntemini oluşturmak için öncelikle azalan ve artan düzende sıralanması gereken bir öğeler koleksiyonuna ihtiyacımız var. Bu örneğin amaçları doğrultusunda, bir sayı dizisiyle uğraştığımızı varsayalım. {5, 4, 60, 9} :

#include

geçersiz insertionsort_ascending ( int dizi1 [ ] , int N ) {

int Ben , J , anahtarım ;

//for döngüsü, i değerlerini 1'den i

için ( Ben = 1 ; Ben < N ; Ben ++ ) {

anahtarım = dizi1 [ Ben ] ;

J = Ben - 1 ;

sırasında ( J >= 0 && dizi1 [ J ] > anahtarım ) {

dizi1 [ J + 1 ] = dizi1 [ J ] ;

J = J - 1 ;

}

dizi1 [ J + 1 ] = anahtarım ;

}

}

geçersiz insertionsort_descending ( int dizi2 [ ] , int M ) {

int Ben , J , anahtarım ;

//i değerlerini 1'den i

için ( Ben = 1 ; Ben < M ; Ben ++ ) {

anahtarım = dizi2 [ Ben ] ;

J = Ben - 1 ;

sırasında ( J >= 0 && dizi2 [ J ] < anahtarım ) {

dizi2 [ J + 1 ] = dizi2 [ J ] ;

J = J - 1 ;

}

dizi2 [ J + 1 ] = anahtarım ;

}

}

int ana ( ) {

//Azalan düzende Ekleme-Sırala

int benim_arr [ ] = { 5 , 4 , 60 , 9 } ; //dört değere sahip bir my_arr[] başlat

int M = boyutu ( benim_arr ) / boyutu ( benim_arr [ 0 ] ) ;

insertionsort_descending ( benim_arr , M ) ;

printf ( 'Dizi azalan düzende sıralandı: ' ) ;

için ( int Ben = 0 ; Ben < M ; Ben ++ )

printf ( '%D ' , benim_arr [ Ben ] ) ;

printf ( ' \N ' ) ;

//Ekleme-Artan düzende sıralama

int N = boyutu ( benim_arr ) / boyutu ( benim_arr [ 0 ] ) ;

insertionsort_ascending ( dizi2 , N ) ;

printf ( 'Dizi artan düzende sıralandı: ' ) ;

için ( int Ben = 0 ; Ben < N ; Ben ++ )

printf ( '%D ' , benim_arr [ Ben ] ) ;

printf ( ' \N ' ) ;

geri dönmek 0 ;

}

Bu kodda, iki yöntem insertionsort_descending() , Ve insertionsort_ascending() dizi değerlerini al benim_arr[] . Kod daha sonra bir kullanır döngü için dizinin öğeleri arasında yineleme yapmak için.

Dizileri azalan ve artan düzende sıraladıktan sonra her iki işlevi de ana işlevde çağırırız. Bundan sonra, sıralanmış diziyi yazdırmak için for döngüleri kullanılır.

Bu programı çalıştırdığımızda, beklenen çıktı aşağıda yer almaktadır:

Çözüm

Ekleme sıralaması, bir diziyi azalan veya artan sırayla sıralamanın hızlı ve kolay bir yoludur. Küçük veri kümeleri için bu sıralama tekniği iyi performans gösterir. Yukarıdaki kılavuzda görebileceğiniz gibi, azalan ve artan düzende ekleme sıralamasını kolayca anlamak için bir C programı örneğini uygulamak basittir.