소소한팁 - 원하는 개수 만큼만 정렬하기 1
20 Feb 2020 | 알고리즘 소소한팁입력을 받으면서 최대 n개 만큼만 정렬이 필요한 경우가 있습니다. 이런 경우 n+1 크기 만큼 배열을 만들고, 마지막 index 를 버퍼로 사용하면 구현할 수 있습니다. 배열의 마지막 index 에 새로운 값을 넣고 맞는 위치를 찾아서 삽입하면 됩니다. 삽입정렬과 유사한 방식입니다.
n개만 입력하면서 정렬하기
#include <iostream>
#define SORT_NUM 5
int sample_arr[SORT_NUM + 1];
int data_num = 0;
void insert(int* arr, int data, int size) {
int idx = size - 1;
for (; idx >= 0; idx--) {
if (arr[idx] < data) {
arr[idx + 1] = arr[idx];
} else {
break;
}
}
arr[idx + 1] = data;
// 최대 SORT_NUM 까지만 증가시킵니다.
if (data_num < SORT_NUM) data_num++;
}
int main() {
int sort_num = SORT_NUM;
insert(sample_arr, 5, data_num);
insert(sample_arr, 3, data_num);
insert(sample_arr, 8, data_num);
insert(sample_arr, 6, data_num);
insert(sample_arr, 2, data_num);
insert(sample_arr, 4, data_num);
insert(sample_arr, 9, data_num);
insert(sample_arr, 7, data_num);
insert(sample_arr, 1, data_num);
for (int i = 0; i < sort_num; i++) {
printf("%d ", sample_arr[i]);
}
}
출력
1 2 3 4 5
Comments