본문 바로가기

전체 글

(26)
정렬(sorting) - 병합정렬(Merge Sort), 힙정렬(Heap Sort), 계수정렬(Counting 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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 #include int number = 8; int sorted[8]; //정렬 배열은 반드시 전역변수로 void merge(int a[], int m, int middle, int n) { int i, j; i = m; j = middle + 1; int k = m;..
정렬(sorting) - 선택정렬(selection sort), 버블정렬(bubble sort), 삽입정렬(insertion sort), 퀵정렬(quick sort) 선택정렬 선택정렬은 말 그대로 '선택'하여 진행하는 정렬이다. 선택정렬의 알고리즘은, 먼저 정렬할 배열을 순회하면서 가장 작은 숫자를 선택하고, 제일 앞에 있는 숫자와 순서를 바꾸는 것으로, 이와 같은 것을 배열의 크기 n 만큼 반복한다. 이해하기 쉽게 예를 들면 아래와 같다. 아래는 내가 짠 선택정렬의 코드이다. 강의에서는 가장 작은 수와 인덱스를 모두 저장하였지만 나는 인덱스만 저장하는 식으로 코드를 짰다는 것에서의 차이가 있었다. 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 #include int main() { int sort[10] = { 1,3,5,8,9,6,2,4,10,7 }; int small=0, index=0, t..