Функция
Сортирует данные, применяя быстрый алгоритм сортировки.
Синтаксис
#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) и возвращает в зависимости от результата сравнения целое число.
При сравнении символ «меньше, чем» (<) означает, что левый элемент в конце сортировки должен оказаться перед правым аргументом. Аналогично, символ «больше, чем» (>) означает, что в конце сортировки левый элемент должен оказаться после правого.
Возвращаемое значение
Нет.
Переносимость
Функция поддерживается на системах UNIX и стандартом ANSI C.
Пример
#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));
}