- 함수의 원형
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]);
}
'Programming > DS Concept' 카테고리의 다른 글
해싱의 오버플로우 처리 방법 (0) | 2019.04.06 |
---|---|
균형 이진 탐색 트리 (0) | 2019.04.05 |
DataStructure - Prim 의 MST 알고리즘 (0) | 2019.04.02 |
DataStructure - 신장 트리, Kruskal 의 MST 알고리즘, 위상 정렬 (0) | 2019.04.01 |
DataStructure - 힙(heap) (0) | 2019.03.29 |