qsort()

Отсортировать массив

Прототип:

#include <stdlib.h>
void qsort( void *base,
size_t num,
size_t width,
int (*compare) ( const void *,
const void * ) );

Аргументы:

base
Указатель на массив, подлежащий сортировке.
num
Количество элементов в массиве.
width
Размер одного элемента в байтах.
compare
Указатель на функцию, сравнивающую две записи. Функция вызывается с двумя аргументами, указывающими на элемент в массиве. Функция сравнения должна вернуть целое число, которое меньше, равно или больше нуля, если первый аргумент меньше, равен или больше второго, соответственно.

Библиотека:

libc

Описание:

Функция qsort() сортирует массив base, используя функцию сравнения compare. Массив должен содержать не менее num элементов, размер каждого из которых равен width байт.

Примеры:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char * some_strs[] = { "last", "middle", "first" };
int compare( const void* op1, const void* op2 )
{
const char **p1 = (const char **)op1;
const char **p2 = (const char **)op2;
return (strcmp( *p1, *p2 ));
}
int main( void )
{
qsort( some_strs, sizeof( some_strs ) / sizeof( char * ),
sizeof( char * ), compare );
printf( "%s %s %s\n", some_strs[0], some_strs[1], some_strs[2] );
return (EXIT_SUCCESS);
}

Код генерирует следующий вывод:

$ ./a.out first last middle

Классификация:

ANSI, POSIX 1003.1

Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Тематические ссылки:

bsearch()




Предыдущий раздел: Описание API системной библиотеки