본문 바로가기

C++74

[ 자료구조 ] Heap sort 힙 정렬 : 힙 정렬은 힙 트리를 이용한 정렬입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 // 왼쪽 자식의 인덱스 = (부모의 인덱스) * 2 // 오른쪽 자식의 인덱스 = (부모의 인덱스) * 2 + 1 // 부모의 인덱스 = (자식의 인덱스) / 2 void heap(int* array, int size) { for (int i = 1; i 0) // 최상위 부모 노트가 될 때까지 반복한다. { int root = (child - 1) / 2; if (array[root] = 0; i--) { // i == .. 2020. 2. 24.
[ 자료구조 ] Merge sort 합병 정렬 : 원소가 하나가 될 때까지 반으로 나눈 후 다시 합치는 정렬입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 int array1[10] = { 1, 9, 4, 10, 6, 2, 5, 3, 7, 8 }; int array2[10]; void merge(int left, int right) // 병합하며 정렬한다. { int mid = (left + right) / 2; int i = left; int j = mid + 1; int k = left; while (i 2020. 2. 24.
[ 자료구조 ] Quick sort 퀵 정렬 : 특정한 값(Pivot)을 기준으로 큰 숫자와 작은 숫자를 구분하는 정렬입니다. - 분할정복 알고리즘을 사용한다. - 피봇을 설정하고, data[i] > data[pivot]이고, data[j] j 처럼 엇갈린경우, 피봇과 j를 바꾼다. - i data[pivot] 이고 data[j] < data[pivot] 인 경우 data[i]와 data[j]를 스왑한다. - 재귀 함수를 이용해서, 분할 알고리즘을 실행한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 int array[10] = { 1, 9, 4, .. 2020. 2. 23.
[ 자료구조 ] Insertion sort 삽입 정렬 : 앞의 원소보다 크고, 뒤에 원소보다는 작은 위치에 보내는 정렬입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 int main() { int array[10] = { 1, 9, 4, 10, 6, 2, 5, 3, 7, 8 }; int temp, j; for(int i = 0; i = 0 && array[j] > array[j + 1]) { temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; j--; } } return 0; } 2020. 2. 23.