본문 바로가기

Programming/DS Concept

퀵 정렬 라이브러리 함수의 사용

  • 함수의 원형

void qsort(

void* base,

size_t num,

size_t width,

int (*compare)(const void *, const void *)

);



  • 함수의 파라미터 설명

base : 배열의 시작 주소

num : 배열 요소의 개수

width : 배열 요소 하나의 크기(바이트 단위)

compare : 비교 함수. 포인터를 통하여 두개의 요소를 비교하여 비교 결과를 정수로 반환한다. 사용자가 제공하여야 됨.







#include <cstdio>

#include <cstring>

#include <cstdlib>



// 두 수를 비교해 오름차순으로 정렬되도록 하는 함수

int compareAs(const void *arg1, const void *arg2) {

return (*(double *)arg1 > *(double *)arg2) ? 1 :

(*(double *)arg1 < *(double *)arg2) ? -1 : 0;

}


// 두 수를 비교해 내림차순으로 정렬되도록 하는 함수

int compareDe(const void *arg1, const void *arg2) {

return (*(double *)arg1 < *(double *)arg2) ? 1 :

   (*(double *)arg1 > *(double *)arg2) ? -1 : 0;

}



int main() {

double list[5] = { 2.1, 0.9, 1.6, 3.8, 1.2 };

qsort((void *)list, 5, sizeof(double), compareDe);

for (int i = 0; i < 5; i++)

printf("  %.1f  ", list[i]);

}