qsort

빠른 정렬을 수행합니다. 이 함수의 더 안전한 버전을 사용할 수 있습니다. 를 참조하세요 qsort_s.

구문

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

매개 변수

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

number
요소의 배열 크기입니다.

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

compare
두 배열 요소를 비교하여 해당 관계를 지정하는 값을 반환하는 사용자가 제공한 루틴에 대한 포인터입니다.

설명

qsort함수는 빠른 정렬 알고리즘을 구현하여 number 요소(각각 width바이트)의 배열을 정렬합니다. base 인수는 정렬할 배열의 밑에 대한 포인터입니다. qsort는 정렬된 요소를 사용하여 이 배열을 덮어씁니다.

qsort는 정렬 중에 compare 루틴을 한 번 이상 호출하며 각 호출에서 두 배열 요소에 포인터를 전달합니다. compare 두 요소가 같으면 정렬된 결과 배열의 순서가 지정되지 않습니다.

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

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

비교 함수 반환 값 설명
< 0 elem1elem2보다 짧음
0 elem1elem2와 같음
> 0 elem1 > elem2

비교 함수에 정의된 대로 배열은 오름차순으로 정렬됩니다. 배열을 내림차순으로 정렬하려면 비교 함수에서 "보다 큼"과 "보다 작음"의 의미를 반전하면 됩니다.

이 함수는 해당 매개 변수의 유효성을 검사합니다. 0이 아닌 경우 compare 또는 0이 아닌 경우 baseNULLnumber 또는 0보다 작은 경우 width 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다.numberNULL 실행을 계속하도록 허용된 경우 함수가 반환되고 errno .로 EINVAL설정됩니다.

기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT의 전역 상태를 참조하세요.

요구 사항

루틴에서 반환된 값 필수 헤더
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 );
}
boy deserves every favor good

참고 항목

검색 및 정렬
bsearch
_lsearch