최소값을 찾아서 맨 앞으로 보내는 방식으로 정렬하는 방법이다.
시간복잡도
O(n^2)
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

현재 배열 요소와 그 다음 배열 요소를 비교하여 조건에 맞으면 교환하는 정렬
안정적인 정렬방법이다.
시간복잡도
O(n^2)
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr

삽입 정렬은 배열의 모든 요소를 순회하면서 각 요소를 이미 정렬된 부분 배열에 적절한 위치에 삽입하는 방식으로 동작한다.
이미 거의 정렬되어 있는 배열에서 효율적인 정렬방법이다.
시간복잡도
O(n^2)
def insertion_sort(array):
for i in range(1, len(array)):
j = i - 1
key = array[i]
while j >= 0 and key < array[j]:
array[j+1] = array[j]
j -= 1
array[j+1] = key
return array

| [알고리즘 자료구조] 덱(deque) (1) | 2023.01.22 |
|---|---|
| [알고리즘 자료구조] 스택(stack)/큐(queue) (0) | 2023.01.19 |