2025.09.11. 실습 / Sort Algorithm
by Ungbae
Selection Sort

import sys
read = sys.stdin.readline
n = int(read())
a = list(map(int, read().split()))
count = 0
for k in range(n - 1, 0, -1):
max_idx = 0
max_val = a[0]
for i in range(1, k + 1):
if a[i] >= max_val:
count += 1
max_val = a[i]
max_idx = i
a[k], a[max_idx] = a[max_idx], a[k]
print(count)
Bubble Sort

n = int(input())
arr = list(map(int, input().split()))
count = 0
for num in range(n-1, 0, -1):
sorted_flag = True
for i in range(num):
if arr[i] > arr[i+1]:
arr[i], arr[i+1] = arr[i+1], arr[i]
count += 1
sorted_flag = False
if sorted_flag:
break
print(count)
Insertion Sort

n = int(input())
A = list(map(int, input().split()))
count = 0
for k in range(1, n):
key = A[k]
j = k - 1
while j >= 0 and A[j] > key:
A[j + 1] = A[j]
count += 1
j -= 1
A[j + 1] = key
count += 1
print(count)
Merge Sort

n = int(input())
A = list(map(int, input().split()))
count = 0
def merge_sort(arr, left, right):
global count
if left >= right:
return
mid = (left + right) // 2
merge_sort(arr, left, mid)
merge_sort(arr, mid + 1, right)
temp = []
i, j = left, mid + 1
while i <= mid and j <= right:
count += 1
if arr[i] < arr[j]:
temp.append(arr[i])
i += 1
else:
temp.append(arr[j])
j += 1
while i <= mid:
temp.append(arr[i])
i += 1
while j <= right:
temp.append(arr[j])
j += 1
arr[left:right+1] = temp
merge_sort(A, 0, n - 1)
print(count)
'CS & AI > Algorithm' 카테고리의 다른 글
| 정렬 알고리즘(Sorting) - O(n^2) 기본 정렬들 (0) | 2025.09.23 |
|---|---|
| 2025.09.18. 실습 (0) | 2025.09.18 |
| 점화식과 알고리즘 복잡도 분석 (0) | 2025.09.16 |
| 알고리즘 설계와 분석 기초 (0) | 2025.09.13 |
| What is Algorithm? (0) | 2025.09.12 |
블로그의 정보
그럼에도 불구하고
Ungbae