qsort
Выполняет быструю сортировку.Более безопасную версию этой функции доступен; см. qsort_s.
void qsort(
void *base,
size_t num,
size_t width,
int (__cdecl *compare )(const void *, const void *)
);
Параметры
base
Начало массива целевого объекта.num
Размер массива в элементах.width
Размер элемента (в байтах).compare
Указатель на предоставляемая пользователем подпрограмму, которая сравнивает 2 элемента массива и возвращает значение, которое определяет отношение.
Заметки
qsort функция реализует алгоритм быстр-сортировки для сортировки массив num элементы, каждое из width байты.Аргумент base указатель к основанию массива для сортировки.qsort перезапишет этот массив с помощью отсортированных элементов.
qsort вызывает compare подпрограмма один или более раз во время сортировки, и передает указатели до 2 элемента массива при каждом вызове.
compare( (void *) & elem1, (void *) & elem2 );
Программа сравнивает элементы и возвращает одно из следующих значений.
сравните возвращаемое значение функции |
Описание |
---|---|
< 0 |
elem1 меньше elem2 |
0 |
elem1 эквивалентно elem2 |
> 0 |
elem1 больше elem2 |
Массив отсортирован в порядке возрастания в соответствии с функцией сравнения.Чтобы отсортировать по убыванию, обратите массив смысл "больше" и "меньше" в функции сравнения.
Эта функция проверяет его параметры.If compare OR num существует NULLили base существует NULL и *num если не равны нулю или width меньше нуля, недопустимый параметр вызван обработчик, как описано в разделе Проверка параметров.Если выполнение может быть продолжено, то функция возвращает и errno равно EINVAL.
Требования
Процедура |
Обязательный заголовок |
---|---|
qsort |
<stdlib.h> и <search.h> |
Дополнительные сведения о совместимости см. Совместимость.
Пример
// crt_qsort.c
// arguments: every good boy deserves favor
/* This program reads the command-line
* parameters and uses qsort to sort them. It
* then displays the sorted arguments.
*/
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int compare( const void *arg1, const void *arg2 );
int main( int argc, char **argv )
{
int i;
/* Eliminate argv[0] from sort: */
argv++;
argc--;
/* Sort remaining args using Quicksort algorithm: */
qsort( (void *)argv, (size_t)argc, sizeof( char * ), compare );
/* Output sorted list: */
for( i = 0; i < argc; ++i )
printf( " %s", argv[i] );
printf( "\n" );
}
int compare( const void *arg1, const void *arg2 )
{
/* Compare all of both strings: */
return _stricmp( * ( char** ) arg1, * ( char** ) arg2 );
}
Эквивалент в .NET Framework
System:: коллекции:: ArrayList:: Сортировать