다음을 통해 공유


qsort

빠른 정렬을 수행합니다.보다 안전한 버전의이 함수를 사용할 수 있습니다. see qsort_s.

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

매개 변수

  • base
    시작 대상 배열입니다.

  • num
    요소 배열의 크기입니다.

  • width
    요소 크기 (바이트)에서입니다.

  • compare
    두 배열의 요소를 비교 하 고 서로의 관계를 나타내는 값을 반환 하는 사용자 제공 루틴에 대 한 포인터입니다.

설명

qsort 기능 배열을 정렬 하려면 퀵 정렬 알고리즘을 구현 num 의 각 요소를 width 바이트입니다.인수가 base 의 배열 정렬 되는 것에 대 한 포인터입니다.qsort이 배열의 요소를 정렬 된를 사용 하 여 덮어씁니다.

qsort호출을 compare 루틴 하나 이상의 정렬 하는 동안 제한 시간이 및 각 호출에서 두 배열 요소에 포인터를 전달 합니다.

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

루틴의 요소를 비교 하 고 다음 값 중 하나를 반환 합니다.

함수 반환 값을 비교 합니다.

설명

< 0

elem1보다 작은elem2

0

elem1해당 하는elem2

> 0

elem1보다 큼elem2

비교 함수에 의해 정의 된 배열은 오름차순으로 정렬.배열을 내림차순으로 정렬 하려면 ">" 및 "보다 작음" 비교 함수를 보면을 반대로 합니다.

이 함수의 매개 변수의 유효성을 검사 합니다.경우 compare 또는 num 입니다 NULL, 또는 base 입니다 NULL 및 *num 0이 아닙니다 경우 width 가 0 보다 잘못 된 매개 변수 처리기를의 설명에 따라 호출 됩니다 매개 변수 유효성 검사.함수 실행 계속할 수 있는지 여부를 반환 하 고 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::Collections::ArrayList::Sort

참고 항목

참조

검색 및 정렬

b 검색

_lsearch