C'de qsort() ile Dizileri Sıralama

C De Qsort Ile Dizileri Siralama



Sıralama, bilgisayar programcılığında temel bir işlemdir ve bir veri koleksiyonunun belirli bir sırada düzenlenmesini içerir. C'de bir eleman dizisini sıralamanın bir yolu, qsort() standart kitaplığın bir parçası olan işlev. Bu işlev bir diziyi, boyutunu ve bir karşılaştırma işlevini bağımsız değişken olarak alır ve diziyi varsayılan olarak artan düzende sıralar.

Bu kılavuz, dizilerin sıralamasını kullanarak gösterir. qsort() C'de işlev görür ve ayrıca C örnek kodlarıyla anlamanıza yardımcı olur.

C'de qsort()

C standart kitaplığı, qsort() sadece dizileri sıralamak için kullanılan işlev. Herhangi bir veri türü dizisiyle çalışabilen son derece optimize edilmiş ve hızlı bir işlevdir.







C'de qsort() kullanan Başlık Dosyası

bu qsort() yöntem içinde tanımlanır stdlib.h uygulamadan önce tanımlanması gereken başlık dosyası qsort() bir C programında.



#include

qsort() bildirimi

beyanı qsort() fonksiyon aşağıdaki gibidir:



geçersiz q sıralama ( geçersiz * temel , elementlerin_sayısı , boyut_of_element , karşılaştırma_işlevi )

qsort() İşlevinin Parametreleri

parametreleri qsort() işlev şunlardır:





temel: Dizinin sıralanacak ilk öğesinin işaretçisi.

elementlerin_sayısı: Sıralanacak dizideki öğe sayısı.



boyut_of_element: Dizideki her öğenin bayt cinsinden boyutu.

karşılaştırma_işlevi: Öğelerin sırasını tanımlayan bir karşılaştırma işlevinin işaretçisi.

qsort() içindeki Karşılaştırma İşlevi nedir?

Karşılaştırma işlevi, karşılaştırılan öğeleri işaret eden, her ikisi de const void* türünde iki parametre alır. İşlev, birinci öğenin sırasıyla ikinci öğeden önce mi, aynı konumda mı yoksa sonra mı sıralanması gerektiğine bağlı olarak 0'dan küçük, eşit veya büyük bir tamsayı döndürmelidir.

C'de qsort Nasıl Çalışır?

bu qsort() fonksiyon şu şekilde çalışır:

Not: Burada bir int dizi[] = {5, 2, 8, 3, 1, 9};

1: Başlangıçta, qsort işlevi aşağıdaki parametrelerle çağrılacaktır:

q sıralama ( varış , 6 , boyutu ( int ) , karşılaştırma_işlevi ) ;

burada arr dizinin işaretçisidir, 6 dizideki öğelerin sayısıdır, sizeof(int) dizideki her bir öğenin boyutudur ve karşılaştırma_işlevi öğelerin sıralanma sırasını belirleyen işlevdir.

2: qsort işlevi bir pivot öğesi seçer. Diyelim ki seçti 3 pivot olarak.

3: qsort işlevi diziyi iki alt diziye ayırır: {2, 1} ve {5, 8, 9}. Birinci alt dizi, pivottan küçük veya ona eşit olan öğeleri içerir ve ikinci alt dizi, pivottan daha büyük olan öğeleri içerir.

4: qsort işlevi, alt dizilerin her birinde kendini yinelemeli olarak çağırır.

5: qsort işlevi, alt dizilerin her biri için pivotları seçer. Pivot olarak 1 ve 8'i seçtiğini varsayalım.

6: qsort işlevi, her bir alt diziyi iki alt diziye daha böler ve bu alt dizilerin her birinde kendini yinelemeli olarak çağırır.

7: qsort işlevi, sıralanmış alt dizileri tek bir sıralanmış dizide birleştirir: {1, 2} ve {5, 8, 9}, {1, 2, 5, 8, 9} olur.

8: Tüm sıralanmış dizi döndürülür.

C Programlamada qsort'un uygulanması

Aşağıdaki kod, uygulanmasını gösterir q sıralama C programlamasında işlev.

#include

#include

int karşılaştırmak ( sabit geçersiz * a1 , sabit geçersiz * b1 )

{

geri dönmek ( * ( int * ) a1 - * ( int * ) b1 ) ;

}

int ana ( )

{

int Ben = 0 , birde = 6 ;

int sıralamak [ ] = { 5 , 2 , 8 , 3 , 1 , 9 } ;

q sıralama ( sıralamak , birde , boyutu ( int ) , karşılaştırmak ) ;

printf ( 'qsort() kullanılarak Dizinin Sıralanmış Elemanları şunlardır: ' ) ;

için ( Ben = 0 ; Ben < birde ; Ben ++ ) {

printf ( '%D ' , sıralamak [ Ben ] ) ; }

geri dönmek 0 ;

}

Yukarıdaki kodda öncelikle iki parametre ile bir karşılaştırma fonksiyonu yapılmıştır. a1 Ve b1 . Ardından yürütme main()'den başlar. Temelde, iki tamsayı değişkenini i=0 ve num=6 olarak başlatıyoruz. Ardından altı öğeli bir diziyi şu şekilde bildiririz: {5, 2, 8, 3, 1, 9} . Bundan sonra qsort() dizi tipinde üç parametreye sahiptir, num parametresi bir dizinin toplam öğelerini söyler, sizeof(int) dizinin toplam boyutunu ifade eder ve karşılaştırma, dizi öğelerini tek tek karşılaştırmak için kullanılır. Ardından, sıralanan diziyi kullanarak yazdırın. printf() C'deki işlev

Çıktı

Çözüm

q sıralama herhangi bir türden dizileri sıralamak için C programlamasında güçlü bir işlevdir. Bir karşılaştırma işlevine dayalı olarak öğeleri artan veya azalan düzende sıralamak için bir hızlı sıralama algoritması kullanır. Yukarıdaki kılavuz, C programlamada qsort'u adım adım çalışarak uygulamanın kolay bir yolunu gösterir. q sıralama algoritma.