O(N * logN) 2

[알고리즘] 힙 정렬 (Heap Sort)

[알고리즘] 힙 정렬 (Heap Sort) 힙정렬은 힙 트리 구조를 이용하는 정렬 방법이다. 따라서 힙(Heap)에 대해서 알아봐야하는데 또 힙을 알기 위해서는 선행적으로 이진 트리(Binary Tree)를 알고 있는 것이 좋다. 이진 트리란 컴퓨터 안에서 데이터를 표현할 때 데이터를 각 노드에 담은 뒤에 노드를 두 개씩 이어 붙이는 구조를 말한다. 즉, 이진트리는 모든 노드의 자식이 2개 이하인 노드를 가지고 있는 구조이다. 그리고 데이터 루트 노드부터 시작해서 자식 노드가 왼쪽 자식 노드, 오른쪽 자식 노드로 차근 차근 들어가는 구조의 이진트리를 완전 이진 트리 고한다. 힙(Heap)은 최솟값이나 최댓값을 빠르게 찾아내기 위해 완전 이진 트리를 기반으로 하는 트리이다. 힙에는 최대힙과 최소힙이 존재하..

[알고리즘] 병합 정렬 (Merge Sort)

[알고리즘] 병합 정렬 (Merge Sort) 병합정렬은 퀵정렬과 마찬가지로 분할 정복 방법의 알고리즘이며 퀵정렬과 마찬가지로 O(N * logN)의 시간 복잡도를 가진다. 먼저 반을 나누고 나중에 합쳐서 정렬을 하자!!!! 다음 숫자들을 오름차순으로 정렬하는 프로그램을 작성하자! 7, 10, 5, 8, 1, 6, 3, 4, 2, 9 7 10 5 8 1 | 6 3 4 2 9 //반 나누기 7 10 5 | 8 1 | 6 3 4 | 2 9 //나눈 것을 또 나누기 5 7 10 | 1 8 | 3 4 6 | 2 9 //나눠진 것들 정렬 1 5 7 8 10 | 2 3 4 6 9 //합쳐서 정렬 1 2 3 4 5 6 7 8 9 10 소스코드 구현 (C++) #include //정렬될 배열을 미리 전역변수로 선언해두..