
bubble Sort(버블정열)

def bubble_sort(arr):
n= len(arr)
for i in range(n):
swapped = Fasle
for j in range(0, n - i - 1):
if arr[j] > arr[j + 1]:
arr[j + 1], arr[j] = arr[j], arr[j+1]
swapped = True
if not swapped:
break
Selection Sort(선택정렬)
def selection_sort(arr):
n = len(arr)
for i in range(n):
min_idx = i
for j in range(i+1, n):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i]. arr[min_idx] = arr[min_idx], arr[i]
return arr
Insertion Sort(삽입정렬)
def selection_sort(arr):
n = len(arr)
for i in range(n):
min_idx = i
for j in range(i+1, n):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i]. arr[min_idx] = arr[min_idx], arr[i]
return arr
Heap Sort(힙정열)
def heapify(arr, n, i):
largest = i # 루트를 최대로 가정
l = 2 * i + 1 # 왼쪽 자식
r = 2 * i + 2 # 오른쪽 자식
# 왼쪽 자식이 루트보다 크다면
if l < n and arr[l] > arr[largest]:
largest = l
# 오른쪽 자식이 현재 최대값보다 크다면
if r < n and arr[r] > arr[largest]:
largest = r
# 최대값이 루트가 아니라면
if largest != i:
arr[i], arr[largest] = arr[largest], arr[i] # 교환
# 교환된 루트에 대해 다시 힙 구성
heapify(arr, n, largest)
Quick Short
피벗 선택
분할
정복
결합
def quick_sort(arr):
if len(arr)<= 1:
return arr
mid= arr[len(arr) // 2]
left= [x for x in arr if x < mid]
pivot= [x for x in arr if x == mid]
right= [x for x in arr if x > mid]
return quick_sort(left) + pivot + quick_sort(right)
Merge Sort

Radix Sort(기수 정열)
탐색알고리즘
Binary Search(이진탐색)
Brute Force
BFS
DFS
Dijkstra
벨만 - 포드 알고리즘
Dynamic Programming
Union-Find
https://gmlwjd9405.github.io/2018/05/08/algorithm-merge-sort.html
https://blog.naver.com/ndb796/221227934987
https://velog.io/@https00200/algorithm-radixSort
https://great-park.tistory.com/134
https://blog.naver.com/ndb796/221230967614