qsort

Выполняет быструю сортировку.Более безопасную версию этой функции доступен; см. qsort_s.

void qsort(
   void *base,
   size_t num,
   size_t width,
   int (__cdecl *compare )(const void *, const void *) 
);

Параметры

  • base
    Начало массива целевого объекта.

  • num
    Размер массива в элементах.

  • width
    Размер элемента (в байтах).

  • compare
    Указатель на предоставляемая пользователем подпрограмму, которая сравнивает 2 элемента массива и возвращает значение, которое определяет отношение.

Заметки

qsort функция реализует алгоритм быстр-сортировки для сортировки массив num элементы, каждое из width байты.Аргумент base указатель к основанию массива для сортировки.qsort перезапишет этот массив с помощью отсортированных элементов.

qsort вызывает compare подпрограмма один или более раз во время сортировки, и передает указатели до 2 элемента массива при каждом вызове.

compare( (void *) & elem1, (void *) & elem2 );

Программа сравнивает элементы и возвращает одно из следующих значений.

сравните возвращаемое значение функции

Описание

< 0

elem1 меньше elem2

0

elem1 эквивалентно elem2

> 0

elem1 больше elem2

Массив отсортирован в порядке возрастания в соответствии с функцией сравнения.Чтобы отсортировать по убыванию, обратите массив смысл "больше" и "меньше" в функции сравнения.

Эта функция проверяет его параметры.If compare OR num существует NULLили base существует NULL и *num если не равны нулю или width меньше нуля, недопустимый параметр вызван обработчик, как описано в разделе Проверка параметров.Если выполнение может быть продолжено, то функция возвращает и errno равно EINVAL.

Требования

Процедура

Обязательный заголовок

qsort

<stdlib.h> и <search.h>

Дополнительные сведения о совместимости см. Совместимость.

Пример

// crt_qsort.c
// arguments: every good boy deserves favor

/* This program reads the command-line
 * parameters and uses qsort to sort them. It
 * then displays the sorted arguments.
 */

#include <stdlib.h>
#include <string.h>
#include <stdio.h>

int compare( const void *arg1, const void *arg2 );

int main( int argc, char **argv )
{
   int i;
   /* Eliminate argv[0] from sort: */
   argv++;
   argc--;

   /* Sort remaining args using Quicksort algorithm: */
   qsort( (void *)argv, (size_t)argc, sizeof( char * ), compare );

   /* Output sorted list: */
   for( i = 0; i < argc; ++i )
      printf( " %s", argv[i] );
   printf( "\n" );
}

int compare( const void *arg1, const void *arg2 )
{
   /* Compare all of both strings: */
   return _stricmp( * ( char** ) arg1, * ( char** ) arg2 );
}
  

Эквивалент в .NET Framework

System:: коллекции:: ArrayList:: Сортировать

См. также

Ссылки

Поиска и сортировки

bsearch

_lsearch