빽 투더 기본기 [알고&자구 3편]. 균형 트리
트리의 구조 특성상 탐색의 시간 복잡도가 '대체로' O(log n) 만에 가능하다. 따라서, 파일 시스템 등, 자료를 저장하거나 관리하는 시스템에서 많이 사용되곤 한다. 아무튼 트리를 사용한다는 것의 핵심은, 빠르게 접근 하기 위함이고, 이를 위해 '그냥 트리' 에서 여러 형태로 변모된다. 2편에서, 트리와 바이너리 서치 트리를 살펴보았다. 하지만 '지금까지의 트리'의 문제점은, 트리가 한 쪽으로 치우쳐져 있는 경우, 탐색의 시간 복잡도가 O(n) 이 된다는 것이다. 따라서, 치우쳐지지 않게, 즉 균형있게 트리를 만드는 것이 트리 구성에 핵심 이슈가 된다. 균형있는 트리. 이를 Balnaced Tree 라고 하며, 기존 트리에서 더 발전된 (균형을 잡아주는) 트리 종류는 다음과 같다. AVL Tree B..
빽 투더 기본기 [알고&자구 1편]. 정렬
기본 정렬에 대해서 정리해 놓는다. 그냥 나 알아보기 쉽게, 직관적으로만 설명한다. 시간 복잡도 O(n^2) 정렬 선택 정렬 뒤에 가장 큰, 또는 가장 작은 값을 현재 인덱스 뒤부터 찾아, 앞의 인덱스부터 하나씩 채워나가는 정렬. # selection sort a = [3,1,2,5,4,6,7] size = len(a) for i in range(size): for j in range(i+1, size): if a[j] < a[i]: a[i], a[j] = a[j], a[i] print(a) 버블 정렬 뒤에 가장 큰, 또는 가장 작은 값을 뒤로 밀어밀어 보내, 마지막 인덱스부터 하나씩 채워나가는 정렬 # bubble sort a = [3,1,2,5,4,6,7] size = len(a) for i in r..