소소한팁 - 원하는 개수 만큼만 정렬하기 0
18 Feb 2020 | 알고리즘 소소한팁알고리즘 문제를 풀다 보면 출력할 때 우선순위에 따라서 정렬된 n개만큼만 필요할 때가 있습니다. 이럴 때 배열의 모든 요소를 다 정렬하지 않고 필요한 n개만큼만 정렬하면 시간을 아낄 수 있습니다. 간단하게 선택정렬 을 약간만 변경해서 구현할 수 있습니다.
n개만 정렬하기
int sample_arr[10] = { 5,4,2,1,8,3,0,6,9,7 };
int main() {
int total_num = 10;
int sort_num = 5;
for (int i = 0; i < sort_num; i++) {
for (int j = i + 1; j < total_num; j++) {
if (sample_arr[i] > sample_arr[j]) {
int temp = sample_arr[j];
sample_arr[j] = sample_arr[i];
sample_arr[i] = temp;
}
}
}
for (int i = 0; i < total_num; i++) {
printf("%d ", sample_arr[i]);
}
}
출력
0 1 2 3 4 8 5 6 9 7
전체 정렬하기
int sample_arr[10] = { 5,4,2,1,8,3,0,6,9,7 };
int main() {
int total_num = 10;
for (int i = 0; i < total_num - 1; i++) {
for (int j = i + 1; j < total_num; j++) {
if (sample_arr[i] > sample_arr[j]) {
int temp = sample_arr[j];
sample_arr[j] = sample_arr[i];
sample_arr[i] = temp;
}
}
}
for (int i = 0; i < total_num; i++) {
printf("%d ", sample_arr[i]);
}
}
출력
0 1 2 3 4 5 6 7 8 9
Comments