한 가지 사용 예는 bsearch(3) 아래의 예제를 참조하십시오. 예를 들어, 다음과 같은 학생 유형이 학생의 배열을 보자. qsort()에 비교 인수로 사용하기에 적합한 라이브러리 루틴에는 alphasort(3) 및 versionsort(3)가 포함됩니다. C 문자열을 비교하기 위해 비교 함수는 아래 예제와 같이 strcmp(3)를 호출할 수 있습니다. 또 다른 예는 명령줄 인수에 주어진 문자열을 정렬하는 다음 프로그램입니다. qsort_s까지 qsort의 사용자는 종종 전역 변수를 사용하여 비교 함수에 추가 컨텍스트를 전달합니다. 다음은 qsort() 및 비교 함수의 도움으로 쉽게 해결할 수있는 흥미로운 문제입니다. 정수 배열을 감안할 때 홀수가 먼저 나타나고 짝수가 나중에 나타나는 방식으로 정렬합니다. 홀수는 내림차순으로 정렬되어야 하며 짝수는 오름차순으로 정렬되어야 합니다. 다음은 위의 접근 방식의 C 구현입니다. qsort()에 대한 핵심은 비교함수 비교기입니다.

비교 함수는 두 개의 인수를 취하고 정렬된 출력에서 상대 순서를 결정하는 논리를 포함합니다. 이 아이디어는 qsort()가 모든 유형(사용자 정의 형식 포함)에 사용될 수 있고 원하는 순서(증가, 감소 또는 기타)를 얻는 데 사용할 수 있도록 유연성을 제공하는 것입니다. size – 이것은 배열의 각 요소의 바이트 크기입니다. 함수는 전달된 개체를 수정할 수 없으며 배열의 위치에 관계없이 동일한 개체에 대해 호출될 때 일관된 결과를 반환해야 합니다. 기본 매개 변수는 배열의 첫 번째 요소에 대한 포인터입니다. num 매개 변수는 배열의 요소 수입니다. 크기 매개 변수는 배열의 각 요소의 바이트로 크기를 제공합니다. 비교 함수는 두 요소를 비교하는 함수입니다.

대부분의 경우 함수는 다음 프로토타입을 따릅니다: 비교 함수 비교는 세 번째 인수를 취한다는 점을 제외하면 qsort_r() 함수는 동일합니다. 포인터는 arg를 통해 비교 함수에 전달됩니다. 이러한 방식으로 비교 함수는 임의의 인수를 통과하기 위해 전역 변수를 사용할 필요가 없으므로 스레드에서 재진입하고 안전하게 사용할 수 있습니다. qsort는 사용자가 제공한 비교 함수에 따라 임의의 개체 배열에 대한 다형성 정렬 알고리즘을 구현하는 C 표준 라이브러리 함수입니다. C 표준은 quicksort를 구현할 필요가 없지만 원래 유닉스 C 라이브러리에서 구현하는 데 사용되었던 «빠른 정렬» 알고리즘(R. S. Scowen으로 인한 퀵정렬 변형)의 이름을 따서 명명되었습니다. [1] comp가 두 요소를 동등한 요소로 표시하면 결과 정렬된 배열의 순서가 지정되지 않습니다. 첫 번째 인수가 두 번째 인수보다 크고 인수가 같으면 0이면 양수 정수 값입니다. 비교 함수의 서명은 다음과 동일해야 합니다: 이름에도 불구하고 C 또는 POSIX 표준은 빠른 정렬을 사용하여 이 함수를 구현하거나 복잡성 또는 안정성을 보장할 필요가 없습니다.

표준 C 라이브러리는 배열정렬에 사용할 수 있는 qsort()를 제공합니다. 이름에서 알 수 있듯이 함수는 QuickSort 알고리즘을 사용하여 지정된 배열을 정렬합니다. 다음은 qsort() qsort() 함수가 SVr4, 4.3BSD, C89, C99를 준수하는 프로토타입입니다. (j = 1; j < argc; j++) 풋스(argv[j]); 출구(EXIT_SUCCESS); } qsort(&argv[1], argc – 1, sizeof(char *), cmpstringp); . qsort()의 더 많은 샘플 사용에 대한 자세한 내용은 다음 게시물을 참조하세요. 단어의 시퀀스를 감안할 때, 함께 상자 스태킹 문제 가장 가까운 점 연습 의 쌍을 함께 모든 anagrams를 인쇄: 정수의 배열을 감안할 때, 대체 방식으로 정렬. 대체 방식으로 보면 짝수 인덱스의 요소가 별도로 정렬되고 홀수 인덱스의 요소가 별도로 정렬됩니다. 오름차순으로 마크를 기준으로 학생을 정렬해야 한다고 가정해 봅시다.