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 | nodes = [6,5,1,4,0,8,7,2,3,3,2,2,2,9,-11]; def quick(start,end): if start >= end: return; pivot = start; left = start; right = end; while left <= right: while left <= end and nodes[left] <= nodes[pivot] : left += 1; while right > start and nodes[right] >= nodes[pivot]: right -= 1; if left <= right: nodes[left] , nodes[right] = nodes[right], nodes[left]; else: nodes[pivot], nodes[right] = nodes[right], nodes[pivot]; quick(start, right - 1); quick(right + 1, end); quick(0,14); print(nodes); nodes = [6,5,1,4,0,8,7,2,3,9,-11,3,-9]; def select_sort(): start = 0; while start <= len(nodes) - 2: min = start; for i in range(start,len(nodes)) : if nodes[i] < nodes[min]: min = i; nodes[start], nodes[min] = nodes[min], nodes[start]; start += 1; select_sort(); print(nodes) nodes = [6,5,1,4,0,8,7,2,3,9,-11,3,-9]; def insert_sort(): left = 0; while left <= len(nodes) - 2: current = left + 1; idx = current; for i in range(current,-1,-1): if nodes[i] < nodes[current]: break; else: idx = i; continue; temp = nodes.pop(current); nodes.insert(idx,temp); left += 1; insert_sort(); print(nodes) | cs |
전체 리스트를 피벗 기준으로 작은건 왼쪽, 큰컨 오른쪽으로 정렬한 뒤에 작은것들은 하나의 리스트로, 큰걸 하나의 리스트로 한 후 재귀적으로 반복한다.
2. 선택정렬
정렬이 안된 부분 중 가장 작은 것을 선택해 정렬 된 부분의 맨 뒤편에 삽입한다.
3. 삽입정렬
정렬이 안된 부분 중 맨 앞의 것을 선택한 다음, 정렬 된 부분에서 자기 자리를 알아낸 다음 삽입한다.
'알고리즘' 카테고리의 다른 글
| 백준 1743 음식물 피하기 (0) | 2022.10.29 |
|---|---|
| 백준 2075 N번째 큰 수 (1) | 2022.10.27 |
| 백준 1935번 후위표기식2 (0) | 2022.10.27 |
| 백준 5397 키로거 (0) | 2022.10.27 |
| 그래프 최단거리 알고리즘 (0) | 2022.10.26 |