#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
void bubble_sort(int *array, int size) {
for (int i = size - 1; i >= 0; i--)
for (int j = 0; j < i; j++)
if (array[j] > array[j + 1])
swap(&array[j], &array[j + 1]);
}
void best_way(int* array, int from, int size) {
if (from == size)
return;
int center=(from + size) / 2;
printf("%d ", array[center]);
best_way(array, from, center);
best_way(array, center + 1, size);
}
int main() {
int sample[10] = { 2, 0, 3, 1, 5, 6, 4 };
printf("정렬 되기 전: ");
for (int i = 0; i < 7; i++)
printf("%d ", sample[i]);
printf("\n정렬 후: ");
bubble_sort(sample, 7);
for (int i = 0; i < 7; i++)
printf("%d ", sample[i]);
printf("\n트리 삽입 최적 순서: ");
best_way(sample, 0, 7);
}
먼저 오름차순 정렬을 수행 후
중간 번호를 재귀적으로 선택한다.
입력은 시작 인덱스와 사이즈(끝 인덱스+1)를 넣어준다.
표준출력:
정렬 되기 전: 2 0 3 1 5 6 4
정렬 후: 0 1 2 3 4 5 6
트리 삽입 최적 순서: 3 1 0 2 5 4 6
'프로그래밍/알고리즘 > C++' 카테고리의 다른 글
[C++] 구간트리 (Binary Indexed Tree) - 구간 최대,최소값 (1) | 2015.08.12 |
---|---|
[C++] 펜윅트리 (이진 인덱스 트리) - 구간합 구해주는 트리 (0) | 2015.07.28 |
[C++] 비트 마스크 배열 (큰 비트 마스크) (0) | 2015.07.27 |
버블 정렬 알고리즘 오름차순 (0) | 2015.07.08 |
[C++] 창작 스도쿠 푸는 알고리즘 (0) | 2015.07.06 |