Jak sortować tablice za pomocą qsort() w C

Jak Sortowac Tablice Za Pomoca Qsort W C



Sortowanie jest podstawową operacją w programowaniu komputerowym i polega na uporządkowaniu zbioru danych w określonej kolejności. Jednym ze sposobów sortowania tablicy elementów w C jest użycie metody qsort() funkcja, która jest częścią biblioteki standardowej. Ta funkcja przyjmuje tablicę, jej rozmiar i funkcję porównującą jako argumenty i domyślnie sortuje tablicę w porządku rosnącym.

Ta wskazówka ilustruje sortowanie tablic przy użyciu qsort() funkcja w C, a także pomaga zrozumieć ją za pomocą przykładowych kodów C.

qsort() w C

Ułatwia nam to standardowa biblioteka C qsort() funkcja, która jest po prostu używana do sortowania tablic. Jest to niezwykle zoptymalizowana i szybka funkcja, która może działać z dowolną tablicą danych.







Plik nagłówka przy użyciu qsort() w C

The qsort() metoda jest zdefiniowana wewnątrz stdlib.h plik nagłówkowy, który należy zdefiniować przed wdrożeniem qsort() w programie C.



#include

Deklaracja qsort()

Deklaracja qsort() funkcja jest następująca:



próżnia sortuj ( próżnia * baza , liczba_elementów , rozmiar_elementu , funkcja porównania )

Parametry funkcji qsort().

Parametry qsort() funkcja to:





baza: Wskaźnik do pierwszego elementu tablicy, który ma zostać posortowany.

liczba_elementów: Liczba elementów w tablicy do posortowania.



rozmiar_elementu: Rozmiar w bajtach każdego elementu w tablicy.

funkcja porównania: Wskaźnik do funkcji porównania, która definiuje kolejność elementów.

Co to jest funkcja porównania w qsort()

Funkcja porównania przyjmuje dwa parametry, oba typu const void*, które wskazują na porównywane elementy. Funkcja powinna zwrócić liczbę całkowitą mniejszą, równą lub większą od 0, w zależności od tego, czy pierwszy element ma być posortowany odpowiednio przed, na tej samej pozycji lub po drugim elemencie.

Jak działa qsort w C

The qsort() funkcja działa w następujący sposób:

Notatka: Tutaj rozważamy m.in int tablica [] = {5, 2, 8, 3, 1, 9};

1: Początkowo funkcja qsort zostanie wywołana z następującymi parametrami:

sortuj ( arr , 6 , rozmiar ( int ) , funkcja porównania ) ;

gdzie arr to wskaźnik do tablicy, 6 to liczba elementów w tablicy, sizeof(int) to rozmiar każdego elementu w tablicy, a funkcja porównania to funkcja określająca kolejność sortowania elementów.

2: Funkcja qsort wybiera element przestawny. Powiedzmy, że wybiera 3 jako oś.

3: Funkcja qsort dzieli tablicę na dwie podtablice: {2, 1} i {5, 8, 9}. Pierwsza podtablica zawiera elementy mniejsze lub równe osi obrotu, a druga podtablica zawiera elementy większe od osi obrotu.

4: Funkcja qsort wywołuje się rekurencyjnie na każdej z podtablic.

5: Funkcja qsort wybiera punkty obrotu dla każdej z podtablic. Powiedzmy, że wybiera 1 i 8 jako osie.

6: Funkcja qsort dzieli każdą podtablicę na dwie kolejne podtablice i rekurencyjnie wywołuje samą siebie na każdej z tych podtablic.

7: Funkcja qsort łączy posortowane podtablice z powrotem w jedną posortowaną tablicę: {1, 2} i {5, 8, 9} stają się {1, 2, 5, 8, 9}.

8: Zwracana jest cała posortowana tablica.

Implementacja qsort w programowaniu w C

Poniższy kod przedstawia implementację sortuj funkcja w programowaniu w C.

#include

#include

int porównywać ( konst próżnia * a1 , konst próżnia * b1 )

{

powrót ( * ( int * ) a1 - * ( int * ) b1 ) ;

}

int główny ( )

{

int I = 0 , na jednego = 6 ;

int szyk [ ] = { 5 , 2 , 8 , 3 , 1 , 9 } ;

sortuj ( szyk , na jednego , rozmiar ( int ) , porównywać ) ;

drukujf ( „Posortowane elementy tablicy za pomocą qsort() to:” ) ;

Do ( I = 0 ; I < na jednego ; I ++ ) {

drukujf ( '%D ' , szyk [ I ] ) ; }

powrót 0 ;

}

W powyższym kodzie najpierw tworzona jest funkcja porównania z dwoma parametrami a1 I b1 . Następnie wykonanie rozpoczyna się od main(). Zasadniczo inicjujemy dwie zmienne całkowite jako i=0 i num=6. Następnie deklarujemy tablicę z sześcioma elementami jako {5, 2, 8, 3, 1, 9} . Po tym qsort() mają trzy parametry typu tablica, parametr num określa całkowitą liczbę elementów tablicy, rozmiar(int) odnosi się do całkowitego rozmiaru tablicy, a porównania służy do porównywania elementów tablicy jeden po drugim. Następnie wydrukuj posortowaną tablicę za pomocą printf() funkcja w C.

Wyjście

Wniosek

sortuj to potężna funkcja w programowaniu C do sortowania tablic dowolnego typu. Wykorzystuje algorytm szybkiego sortowania do sortowania elementów w kolejności rosnącej lub malejącej na podstawie funkcji porównania. Powyższy przewodnik pokazuje prosty sposób implementacji qsort w programowaniu C z działaniem krok po kroku sortuj algorytm.