CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по функциям C/C++
qsort
qsort
Функция Сортирует данные, применяя быстрый алгоритм
сортировки.
Синтаксис #include<stdlib.h>
void qsort(void *base, size_t nelem, size_t width,
int(*fcmp)(const void *, const void *));
Файл, содержащий stdlib.h
прототип
Описание Функция qsort применяет алгоритм быстрой
сортировки "средний из трех". Функция qsort
сортирует содержимое таблицы постоянно вызывая
функцию сравнения, определяемой пользователем и
адресуемой с помощью указателя fcmp.
- base адресует базу (нулевой элемент) сортируемой
таблицы.
- nelem - число элементов таблицы;
- width - размер каждого элемента таблицы в бай-
тах.
Функция *fcmp - функция сравнения - получает два
аргумента elem1 и elem2, которые представляют
собой два указателя на 2 элемента таблицы. Функция
сравнения *fcmp сравнивает между собой два
адресуемых элемента таблицы (*elem1 и *elem2) и
возвращает в зависимости от результата сравнения
целое число.
Если элементы: *fcmp возвращает:
--------------------------------------------------
*elem1<*elem2 целое <0
*elem1==*elem2 0
*elem1>elem2 целое >0
--------------------------------------------------
При сравнении символ "меньше, чем" (<) означает,
что левый элемент в конце сортировки должен
оказаться перед правым аргументом. Аналогично,
символ "больше, чем" (>) означает, что в конце
сортировки левый элемент должен оказаться после
правого.
Возвращаемое Нет.
значение
Переносимость Функция поддерживается на системах UNIX и стандар-
том ANSI C.
Смотрите также bsearch, lsearch.
Пример:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int sort_function(const void *a,const void *b);
char list[5][4] = {"cat", "car", "cab", "cap", "can"};
int main(void)
{
int x;
qsort((void *)&list, 5, sizeof(list[0]), sort_function);
for(x=0; x<5, x++)
printf("%s\n",list[x]);
}
int sort_function(const void *a,const void *b)
{
return(strcmp(a,b));
}
Вывод:
cab
can
cap
car
cat
