자료구조 알고리즘

선택정렬 알고리즘

진호우 2022. 6. 22. 15:01

삽입 정렬(揷入整列, insertion sort)은 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘이다.

k번째 반복 후의 결과 배열은, 앞쪽 k + 1 항목이 정렬된 상태이다.

각 반복에서 정렬되지 않은 나머지 부분 중 첫 번째 항목은 제거되어 정확한 위치에 삽입된다. 그러므로 다음과 같은 결과가 된다.

배열이 길어질수록 효율이 떨어진다. 다만, 구현이 간단하다는 장점이 있다.

선택정렬이나 거품정렬과 같은 O(n2) 알고리즘에 비교하여 빠르며, 안정 정렬이고 in-place 알고리즘이다.

 

 

def insert_sort(x):
	for i in range(1, len(x)):
    	for j in range(i, 0, -1):	# 인덱스 i부터 1까지 1씩 감소하며 반복하는 문법
        	if x[j] < x[j-1]:	# 한칸씩 왼쪽으로 이동
            	x[j], x[j-1] = x[j-1], x[j]
            else:	# 자기보다 작은 데이터를 만나면 그 위치에서 멈춤
            	break

	return x