Как да сортирате масиви с qsort() в C

Kak Da Sortirate Masivi S Qsort V C



Сортирането е основна операция в компютърното програмиране и включва подреждане на колекция от данни в определен ред. Един от начините за сортиране на масив от елементи в C е да използвате qsort() функция, която е част от стандартната библиотека. Тази функция приема масив, неговия размер и функция за сравнение като аргументи и сортира масива във възходящ ред по подразбиране.

Тази насока илюстрира сортирането на масиви с помощта на qsort() функция в C и също така ви помага да я разберете чрез C примерни кодове.

qsort() в C

C стандартната библиотека ни улеснява с qsort() функция, която се използва просто за сортиране на масиви. Това е изключително оптимизирана и бърза функция, която може да работи с всякакъв масив от данни.







Заглавен файл с помощта на qsort() в C

The qsort() методът е дефиниран вътре в stdlib.h заглавен файл, който трябва да бъде дефиниран преди внедряване qsort() в C програма.



#include

Декларация на qsort()

Декларацията на qsort() функция е както следва:



невалиден qsort ( невалиден * база , брой_елементи , размер_на_елемента , функция_сравнение )

Параметри на функцията qsort().

Параметрите на qsort() функция са:





база: Указател към първия елемент от масива за сортиране.

брой_елементи: Брой елементи в масива за сортиране.



размер_на_елемента: Размер в байтове на всеки елемент в масива.

функция_сравнение: Указател към функция за сравнение, която определя реда на елементите.

Какво представлява функцията за сравнение в qsort()

Функцията за сравнение приема два параметъра, и двата от тип const void*, които сочат към сравняваните елементи. Функцията трябва да върне цяло число, по-малко, равно или по-голямо от 0, в зависимост от това дали първият елемент трябва да бъде сортиран съответно преди, на същата позиция или след втория елемент.

Как работи qsort в C

The qsort() функцията работи по следния начин:

Забележка: Тук обмисляме int arr[] = {5, 2, 8, 3, 1, 9};

1: Първоначално функцията qsort ще бъде извикана със следните параметри:

qsort ( обр , 6 , размер на ( вътр ) , функция_сравнение ) ;

където arr е указателят към масива, 6 е броят на елементите в масива, sizeof(int) е размерът на всеки елемент в масива, а compare_function е функцията, която определя реда, в който са сортирани елементите.

2: Функцията qsort избира опорен елемент. Да кажем, че избира 3 като опора.

3: Функцията qsort разделя масива на два подмасива: {2, 1} и {5, 8, 9}. Първият подмасив съдържа елементи, които са по-малки или равни на опорната точка, а вторият подмасив съдържа елементи, които са по-големи от опорната точка.

4: Функцията qsort се извиква рекурсивно на всеки от подмасивите.

5: Функцията qsort избира оси за всеки от подмасивите. Да кажем, че избира 1 и 8 като опорни точки.

6: Функцията qsort разделя всеки под-масив на още два под-масива и рекурсивно се извиква на всеки от тези под-масиви.

7: Функцията qsort комбинира сортираните подмасиви обратно в един сортиран масив: {1, 2} и {5, 8, 9} стават {1, 2, 5, 8, 9}.

8: Връща се целият сортиран масив.

Внедряване на qsort в C програмиране

Следният код показва изпълнението на qsort функция в програмирането на C.

#include

#include

вътр сравнявам ( конст невалиден * a1 , конст невалиден * b1 )

{

връщане ( * ( вътр * ) a1 - * ( вътр * ) b1 ) ;

}

вътр основен ( )

{

вътр аз = 0 , никой = 6 ;

вътр масив [ ] = { 5 , 2 , 8 , 3 , 1 , 9 } ;

qsort ( масив , никой , размер на ( вътр ) , сравнявам ) ;

printf ( 'Сортираните елементи на масив с помощта на qsort() са: ' ) ;

за ( аз = 0 ; аз < никой ; аз ++ ) {

printf ( '%д ' , масив [ аз ] ) ; }

връщане 0 ;

}

В горния код първо се прави функция за сравнение с два параметъра a1 и b1 . След това изпълнението започва от main(). В основни линии инициализираме две целочислени променливи като i=0 и num=6. След това декларираме масив с шест елемента като {5, 2, 8, 3, 1, 9} . След това qsort() имат три параметъра от тип масив, параметърът num казва общия брой елементи на масив, sizeof(int) се отнася до общия размер на масива, а compare се използва за сравняване на елементите на масива един по един. След това отпечатайте сортирания масив, като използвате printf() функция в C.

Изход

Заключение

qsort е мощна функция в C програмирането за сортиране на масиви от всякакъв тип. Той използва алгоритъм за бързо сортиране, за да сортира елементите във възходящ или низходящ ред въз основа на функция за сравнение. Ръководството по-горе ви показва лесен начин за внедряване на qsort в програмиране на C със стъпка по стъпка работа на qsort алгоритъм.