c언어 퀵정렬 함수click
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int compare(const void* a, const void* b) {
int num1 = *(int*)a;
int num2 = *(int*)b;
if (num1 < num2) return -1;
if (num1 > num2) return 1;
return 0;
}
int* solution(int k, int score[], size_t score_len) {
int* answer = (int*)malloc(sizeof(int)*score_len);
int arr[100] = { 0, }; //명예의 전당
for (int i = 0; i < 100; i++) {
arr[i] = 2001;
}
for (int i = 0; i < k; i++) { //순위권까지는 비교 쉬움
if (i >= score_len) break; //출연자수가 k보다 작으면 break
arr[i] = score[i];
qsort(arr, i+1, sizeof(int), compare);
answer[i] = arr[0]; //가장 낮은 점수
printf("%d\n", answer[i]);
}
for (int i = k; i < score_len; i++) { //1~k까지의 순위가 정해진 후 남은 사람들
if (score[i] > arr[0]) { //k번째 사람보다 점수가 높다면
arr[0] = score[i]; //가장 마지막 자리에 넣은 다음에(차피 원래 k번째였던 사람은 탈락하니깡)
qsort(arr, k, sizeof(int), compare); //다시 정렬하여
}
answer[i] = arr[0]; //가장 낮은 점수 저장
}
return answer;
}
2023-03-30