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.