qsort 함수 예제

함수 qsort()는 base를 가리키는 배열의 num 요소를 정렬합니다. 모든 요소에는 크기 바이트 길이가 있습니다. qsort 함수는 비교 함수를 사용하여 요소의 순서를 결정합니다. compar – 이것은 두 가지 요소를 비교하는 기능입니다. 한 가지 사용 예는 bsearch(3) 아래의 예제를 참조하십시오. 다음은 qsort() 및 비교 함수의 도움으로 쉽게 해결할 수있는 흥미로운 문제입니다. 정수 배열을 감안할 때 홀수가 먼저 나타나고 짝수가 나중에 나타나는 방식으로 정렬합니다. 홀수는 내림차순으로 정렬되어야 하며 짝수는 오름차순으로 정렬되어야 합니다. 함수는 전달된 개체를 수정할 수 없으며 배열의 위치에 관계없이 동일한 개체에 대해 호출될 때 일관된 결과를 반환해야 합니다. qsort()에 비교 인수로 사용하기에 적합한 라이브러리 루틴에는 alphasort(3) 및 versionsort(3)가 포함됩니다. C 문자열을 비교하기 위해 비교 함수는 아래 예제와 같이 strcmp(3)를 호출할 수 있습니다.

첫 번째 인수가 두 번째 인수보다 크고 인수가 같으면 0이면 양수 정수 값입니다. 비교 함수의 시그니처는 다음과 동일해야 합니다. num 매개 변수는 배열의 요소 수입니다. 크기 매개 변수는 배열의 각 요소의 바이트로 크기를 제공합니다. 비교 함수는 두 요소를 비교하는 함수입니다. 대부분의 경우 함수는 다음 프로토타입을 따릅니다: qsort는 사용자가 제공한 비교 함수에 따라 임의의 개체배열에 대한 다형성 정렬 알고리즘을 구현하는 C 표준 라이브러리 함수입니다. C 표준은 quicksort를 구현할 필요가 없지만 원래 유닉스 C 라이브러리에서 구현하는 데 사용되었던 «빠른 정렬» 알고리즘(R. S. Scowen으로 인한 퀵정렬 변형)의 이름을 따서 명명되었습니다. [1] qsort 함수는 1973년 버전 3 유닉스에서 시행되었지만, 그 다음에는 어셈블러 서브루틴이었습니다.

[3] 표준 C 버전의 인터페이스가 대략적인 C 버전은 버전 6 유닉스에 있습니다. [4] 그것은 버클리에서 1983 년에 다시 작성되었습니다. [1] 이 함수는 ANSI C(1989)에서 표준화되었다. qsort() 함수는 SVr4, 4.3BSD, C89, C99를 준수합니다. qsort 함수의 구현은 다형성, 3방향 비교 함수에 대한 함수 포인터를 사용하여 다양한 종류의 데이터를 정렬하는 기능 및 개별 입력 개체의 크기를 지정하는 매개 변수를 달성합니다.