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