1. 버블 알고리즘
def buble_sort(arr):
N = len(arr)
for i in range(N):
for j in range(i+1, N):
if arr[i] > arr[j]:
arr[i], arr[j] = arr[j], arr[i]
return arr
2. 병합 정렬 알고리즘
def merge_sort(arr):
N = len(arr)
if N < 2:
return arr
mid = N // 2
left, right = arr[:mid], arr[:mid]
left_arr = merge_sort[:mid]
right_arr = merger_sort[mid:]
result = []
l = r = 0
while l < len(left_arr) and h < len(right_arr):
if left_arr[l] < right_arr[h]:
#인덱스를 앞으로 보내면서 비교
result.append(left_arr[l])
l += 1
else:
result.append(right_arr[h])
h += 1
# 나머지를
result += low_arr[l:]
result += high_arr[h:]
return result
3. 퀵 정렬
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
lesser_arr, equal_arr, greater_arr = [], [], []
for num in arr:
if num < pivot:
lesser_arr.append(num)
elif num > pivot:
greater_arr.append(num)
else:
equal_arr.append(num)
return quick_sort(lesser_arr) + equal_arr + quick_sort(greater_arr)
'Algorithm > 기본 알고리즘 구현' 카테고리의 다른 글
세그먼트 트리 python (0) | 2021.07.30 |
---|---|
최소 공통 조상(LCA, Least Common Ancestor) (0) | 2021.07.27 |
상호 배타적 집합 (Disjoint Set) / Union Find/ 파이썬 (0) | 2020.09.01 |