본문 바로가기

Language/Algorithm

(5)
5. 힙 트리 ( Heap Tree ) 트리형 자료구조에서 최대값, 최소값을 빠르게 찾아내기 위해 고안된 자료구조이다. 단순한 규칙 하나를 가지고 있는데 부모의 값은 항상 자식들의 값보다 크거나 작아야 한다. 최소값을 구할 때는 부모의값이, 최대값을 구할 때는 자식의 값이 작아야한다. (최소 힙, 최대 힙) 힙 트리의 삽입과정은 다음과 같다. 9가 삽입될 때, 해당 트리에서 최소힙을 구하는 과정 1, 최하위 노드를 삽입한다. 2, 부모노드와 비교하여 조건에 부합할 경우, 부모노드와 교환한다. 3, 위 과정을 반복한다. 삭제 과정은 루트 노드를 제거 후, 루트자리에 마지막노드를 삽입하고 자식노드들과 비교하는 형식으로 이루어진다.
4. 합병 정렬 합병 정렬은 주어진 n길이의 리스트에서 작은 집합을 여러개 만들어 비교하고 여러 집합을 병합해과는 과정에서 리스트를 정렬해나가는 방법이다. 1. 분할단계는 리스트를 성분이 2개가 될 때까지 분할한다. 2. 병합단계는 2개의 성분을 가진 리스트에서 정렬하여 병합된 리스트에 삽입한다. 3. 모든 리스트가 주어진 길이 n이 될 때까지 병합을 반복한다 합병정렬의 방법 출처: https://ko.wikipedia.org/wiki/%ED%95%A9%EB%B3%91_%EC%A0%95%EB%A0%AC 합병 정렬 - 위키백과, 우리 모두의 백과사전 합병 정렬 또는 병합 정렬(merge sort)은 O(n log n) 비교 기반 정렬 알고리즘이다. 일반적인 방법으로 구현했을 때 이 정렬은 안정 정렬에 속하며, 분할 정복 ..
3. 버블 정렬 버블 정렬은 인접한 두 원소를 검사해 정렬하는 알고리즘이다. 선택 정렬은 앞자리를 제하고, 남은 것 중 최소값을 찾는 방식으로 추출 했었으나, 버블 정렬에서는 모든 값을 다회 비교하기 위해 한 자리에서 두 번 이상의 교체가 이루어지는 경우가 있다. 1. 주어진 리스트의 첫번째 값과 인접한 값을 비교한다. 2. 두 값의 크기 순서가 일치하지 않을 경우, 교환한다. 3. 각 자리별로 순서대로 반복하며, 모든 자리의 값 크기 순서가 맞을 때 까지 순회한다. 리스트가 [ 5,4,2,1,0,3 ] 일 경우, 큰 수부터 정렬하는 예시 1순회 pass table 자리교환 0 5,4,2,1,0,3 1 5,4,2,1,0,3 X 2 5,4,2,1,0,3 X 3 5,4,2,1,0,3 X 4 5,4,2,1,0,3 X 5 5,..
2. 선택 정렬 선택정렬은 정렬 알고리즘의 하나로 리스트 자료형에서 적은 비용을 부과하는 특징을 가지고 있다. 1. 주어진 리스트에서 최소값을 찾는다. 2. 리스트의 맨 첫번째를 n이라고 하고, 처음에는 n의 위치로 최소값을 이동한다. 3. 다시 최소값을 찾아 n+1 위치로 이동한다. 4. 정렬될 때까지 위 3번 항목을 반복한다. 리스트가 [ 5,4,2,1,0,3 ] 일 경우, pass table 최소값 0 [ 5,4,2,1,0,3 ] 0 1 [ 0,5,4,2,1,3 ] 1 2 [ 0,1,5,4,2,3 ] 2 3 [ 0,1,2,5,4,3 ] 3 4 [ 0,1,2,3,5,4 ] 4 5 [ 0,1,2,3,4,5 ] 5 『시간 복잡도』 O(n^2) 이며, 모든 수를 swap 할 경우이다. Ω(n^2) 이며, swap의 수가 ..
1.이진탐색트리 (BST) 이진탐색트리는 오름,내림차순이 가능한 리스트 혹은 정렬된 구조의 자료형에서, 처음 크기의 값의 중간값을 임의의 값으로 정하고, 크고 작음 여부를 판별해나가는 방식으로 비교한다. 11을 찾기위해 이진탐색 트리를 사용할 경우, 중간값인 6보다 크거나 작음을 판별하기만 하면 되기 때문에 좌측 서브트리는 고려할 필요가 없다, 따라서 필요한 최소 검색 시간이 매우 줄어들게 된다. 『시간 복잡도』 전체 순회의 경우, 최상의 결과일 때 시간복잡도는 Ω(1) [ 첫번째에 찾은 경우 ] 최악의 결과일 때 시간복잡도는 O(n) [ 마지막에 찾은 경우 ] 이지만 이진탐색트리의 검색 시간 복잡도는 Ω(1), O(H) 로, 트리의 높이에 따라서 달라지긴 하나, 전체 순회보다 빠르다고 할 수 있다. def binarySearch..