[알고리즘]힙 정렬(Heap Sort)
·
CS 지식/[알고리즘]
완전 이진 트리란? 삽입할 때 왼쪽부터 차례대로 추가하는 이진 트리 힙 정렬 완전이진 트리를 이용한 정렬 방식 평균과 최악 모두 시간 복잡도는 O(nlog2n) 과정 최대 힙을 구성 현재 힙 루트는 가장 큰 값이 존재함. 루트의 값을 마지막 요소와 바꾼 후, 힙의 사이즈 하나 줄임 힙의 사이즈가 1보다 크면 위 과정 반복 루트를 마지막 노드로 대체 (11 → 4), 다시 최대 힙 구성 이와 같은 방식으로 최대 값을 하나씩 뽑아내면서 정렬하는 것이 힙 소트 public void heapSort(int[] array) { int n = array.length; // max heap 초기화 for (int i = n/2-1; i>=0; i--){ heapify(array, n, i); // 1 } // ext..
[알고리즘] 삽입 정렬(Insertion Sort)
·
CS 지식/[알고리즘]
삽입 정렬 2번째 원소부터 시작하여 그 앞(왼쪽)의 원소들과 비교하여 삽입할 위치를 지정한 후, 원소를 뒤로 옮기고 지정된 자리에 자료를 삽입 하여 정렬하는 알고리즘 순서에 맞게 삽입 시키는 정렬 평균과 최악 모두 수행 시간 복잡도는 O(n2) Process (Ascending) 정렬은 2번째 위치(index)의 값을 temp에 저장 temp와 이전에 있는 원소들과 비교하며 삽입 '1'번으로 돌아가 다음 위치(index)의 값을 temp에 저장하고, 반복 void insertionSort(int[] arr) { for(int index = 1 ; index < arr.length ; index++){ // 1. int temp = arr[index]; int prev = index - 1; while( ..