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;
}
결과