[python] 정렬 알고리즘
정렬 알고리즘은 컴퓨터 과학에서 가장 기본이 되는 알고리즘 중 하나로, 데이터를 특정한 기준에 따라 순서대로 정렬하는 작업을 의미합니다. 이번 포스트에서는 파이썬에서 자주 사용되는 몇 가지 정렬 알고리즘에 대해 알아보겠습니다.
선택 정렬 (Selection Sort)
선택 정렬은 주어진 리스트 중에서 가장 작은 값을 찾아 맨 앞으로 보내는 과정을 반복하여 정렬하는 알고리즘입니다. 아래는 선택 정렬의 파이썬 코드 예시입니다.
def selection_sort(arr):
for i in range(len(arr)):
min_idx = i
for j in range(i+1, len(arr)):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
return arr
삽입 정렬 (Insertion Sort)
삽입 정렬은 현재 위치에서 그 이전의 배열들을 비교하여 자신의 위치를 찾아 삽입하는 알고리즘입니다. 아래는 삽입 정렬의 파이썬 코드 예시입니다.
def insertion_sort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i - 1
while j >= 0 and arr[j] > key:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
return arr
퀵 정렬 (Quick Sort)
퀵 정렬은 분할 정복(divide and conquer) 알고리즘으로, 기준(pivot)을 기준으로 작은 값은 왼쪽으로, 큰 값은 오른쪽으로 분할하여 정렬하는 알고리즘입니다. 아래는 퀵 정렬의 파이썬 코드 예시입니다.
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
병합 정렬 (Merge Sort)
병합 정렬은 분할 정복 알고리즘으로, 배열을 반으로 나눈 후 정렬하여 다시 병합하는 과정을 반복하여 정렬하는 알고리즘입니다. 아래는 병합 정렬의 파이썬 코드 예시입니다.
def merge_sort(arr):
if len(arr) <= 1:
return arr
mid = len(arr) // 2
left = arr[:mid]
right = arr[mid:]
left = merge_sort(left)
right = merge_sort(right)
return merge(left, right)
def merge(left, right):
result = []
while left and right:
if left[0] < right[0]:
result.append(left.pop(0))
else:
result.append(right.pop(0))
while left:
result.append(left.pop(0))
while right:
result.append(right.pop(0))
return result
위에 소개된 알고리즘은 파이썬에서 사용되는 대표적인 정렬 알고리즘들입니다. 각각의 알고리즘은 특정한 경우에 더욱 효율적이며, 정렬해야 할 데이터의 크기와 특성에 따라 선택하여 사용할 수 있습니다.
참고 자료: