다음을 통해 공유


qsort

빠른 정렬을 수행합니다. 이러한 기능의 더 안전한 버전을 사용할 수 있습니다. qsort_s 를 참조하십시오.

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

매개 변수

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

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

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

  • compare
    사용자가 제공한 루틴은 두 개의 배열 요소를 비교하고 그들의 관계를 지정하는 값을 반환하는 포인터입니다.

설명

qsort 함수는 각 width 바이트의 num 요소의 배열을 정렬하기 위한 빠른 정렬 알고리즘을 구현합니다. base 인수는 정열할 배열의 처음을 가리키는 포인터입니다. qsort 은 정렬된 원소들을 사용하여 이 배열을 덮어씁니다.

qsort 는 각 호출에서 두 배열 원소들에 대한 포인터를 전달하여 정렬하는 동안 compare 루틴을 한번 이상 호출합니다.

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

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

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

설명

< 0

elem1 < elem2

0

elem2와 같은 elem1

> 0

elem1 > elem2

비교 함수에 의해 정의된 배열은 오름차순으로 정렬됩니다. 배열을 내림차순으로 정렬하려면, 비교 함수의 "보다 큼" 및 "보다 작음" 조건을 뒤집습니다.

이 함수는 해당 매개 변수의 유효성을 검사합니다. 만일 compare 또는 num 이 NULL 이거나 base 이 NULL 이고 *num 이 0이 아닌 경우, 또는 width 이 0보다 더 적은 경우, 매개 변수 유효성 검사 에서 설명된 대로 잘못된 매개변수 처리기가 호출됩니다. 계속해서 실행하도록 허용된 경우, 함수는 -1을 반환하고 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

참고 항목

참조

검색 및 정렬

bsearch

_lsearch