Man page - qsort(3)

Packages contains this manual

Available languages:

en fr es pl ja ru ro de

Manual

qsort

НАИМЕНОВАНИЕ
БИБЛИОТЕКА
ОБЗОР
ОПИСАНИЕ
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
АТРИБУТЫ
СТАНДАРТЫ
ИСТОРИЯ
ПРИМЕЧАНИЯ
ПРИМЕРЫ
СМОТРИТЕ ТАКЖЕ
ПЕРЕВОД

НАИМЕНОВАНИЕ

qsort, qsort_r - сортировка массива

БИБЛИОТЕКА

Стандартная библиотека языка C ( libc , -lc )

ОБЗОР

#include <stdlib.h>

void qsort(void base [. size * . nmemb ], size_t nmemb , size_t size ,
int (*
compar )(const void [. size ], const void [. size ]));
void qsort_r(void
base [. size * . nmemb ], size_t nmemb , size_t size ,
int (*
compar )(const void [. size ], const void [. size ], void *),
void *
arg );

Требования макроса тестирования свойств для glibc (см. feature_test_macros (7)):

qsort_r ():
_GNU_SOURCE

ОПИСАНИЕ

Функция qsort () сортирует массив из nmemb размером size . Аргумент base указывает на начало массива.

Содержимое массива сортируется в соответствии с функцией сравнения, на которую ссылается compar , вызываемой вместе с двумя аргументами, которые ссылаются на сравниваемые объекты.

Функция сравнения должна вернуть целое, меньшее, равное и большее нуля для случаев, когда первый аргумент меньше, равен или больше второго соответственно. Если оба элемента сравнения равны, порядок их сортировки в массиве не будет определен.

Функция qsort_r () идентична qsort (), за исключением того, что в функцию сравнения compar добавлен третий аргумент. Указатель передаётся в функцию сравнения через аргумент arg . Таким образом, функции сравнения не требуется глобальные переменные для передачи произвольных аргументов, и поэтому она реентерабельна и её можно безопасно использовать в нитях.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

Функции qsort () и qsort_r () ничего не возвращают.

АТРИБУТЫ

Описание терминов данного раздела смотрите в attributes (7).

Image grohtml-624957-1.png

СТАНДАРТЫ

qsort ()

C11, POSIX.1-2008.

ИСТОРИЯ

qsort ()

POSIX.1-2001, C89, SVr4, 4.3BSD.

qsort_r ()

glibc 2.8.

ПРИМЕЧАНИЯ

Для сравнения C-строк в качестве функции сравнения можно использовать strcmp (3), как это указано ниже.

ПРИМЕРЫ

Для примера использования смотрите пример, указанный в bsearch (3).

Еще один пример программы, сортирующей строки, переданные в качестве аргументов через командную строку:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static int
cmpstringp(const void *p1, const void *p2)
{
/* The actual arguments to this function are "pointers to
pointers to char", but strcmp(3) arguments are "pointers
to char", hence the following cast plus dereference. */
return strcmp(*(const char **) p1, *(const char **) p2);
}
int
main(int argc, char *argv[])
{
if (argc < 2) {
fprintf(stderr, "Usage: %s <string>...\n", argv[0]);
exit(EXIT_FAILURE);
}
qsort(&argv[1], argc - 1, sizeof(char *), cmpstringp);
for (size_t j = 1; j < argc; j++)
puts(argv[j]);
exit(EXIT_SUCCESS);
}

СМОТРИТЕ ТАКЖЕ

sort (1), alphasort (3), strcmp (3), versionsort (3)

ПЕРЕВОД

Русский перевод этой страницы руководства разработал(и) Artyom Kunyov <artkun@guitarplayer.ru>, Azamat Hackimov <azamat.hackimov@gmail.com>, Konstantin Shvaykovskiy <kot.shv@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Kirill Rekhov <krekhov.dev@gmail.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков .