2025-07-30 22:10

Status:

Tags: 알고리즘

선택 정렬

배열에서 가장 큰 혹은 가장 작은 요소를 반복적으로 찾아 배열의 앞 혹은 뒤에 위치시킴

  • 시간 복잡도: 모두 O(n^2)

최소값 찾고 0번이랑 교환, 나머지에서 최솟값찾고 1번이랑 교환 … 마지막 2개 비교후 교환 ,끝

def selection_sort(arr):
	n = len(arr)
	for i in range(n-1):
		# 최소값 인덱스 찾기
		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

단순하고 메모리 효율적이지만 너무 느려서 사실상 학습용이거나 교환비용 큰 특수 환경에서 사용

References

배열 삽입 정렬 선택 정렬 핸드북