qsort

Функция            Сортирует данные, применяя быстрый алгоритм
                   сортировки.

Синтаксис          #include
                   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
#include
#include

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