Language/C & C++

[C언어] qsort() 로 정렬하기

jsh5408 2021. 12. 19. 23:18

 

qsort

: <stdlib.h> 에서 제공하는 Quick Sort 정렬함수

 

 

헤더

#include <stdlib.h>

 

 

프로토타입

void qsort (void *base, size_t nel, size_t width, int (*compare)(const void *, const void *)

 

base: 정렬할 배열

nel: 정렬할 배열의 크기

width: 정렬할 배열의 원소 하나의 크기

compare: 비교 기준 함수

 

 

compare 함수

int compare(const void *a, const void *b) {
    if(*(int*)a > *(int*)b) {
        return 1;
    }
    else if(*(int*)a < *(int*)b) {
        return -1;
    }
    else {
        return 0;
    }
}

 

 

적용 예시

arr 정렬하기

 

#include <stdio.h>
#include <stdlib.h>

int compare(const void *a, const void *b) {
    if(*(int*)a > *(int*)b) {
        return 1;
    }
    else if(*(int*)a < *(int*)b) {
        return -1;
    }
    else {
        return 0;
    }
}

int main() {
    int i = 0;
    int arr[] = {7, 9, 8, 5, 6, 3, 2, 4, 1};
    int arrLength = sizeof(arr) / sizeof(int);

    qsort(arr, arrLength, sizeof(int), compare);

    for(i=0; i<arrLength; i++) {
      printf("%d ", arr[i]);
    }
    printf("\n");

    return 0;
}

 

 

결과