14 April 2015

Insertion Sort

삽입 정렬은 이전에 정렬된 배열과 비교하여 자신의 위치를 찾아 삽입합니다. 시간복잡도는 O(n2)입니다.

의사 코드는 다음과 같습니다.

function insertionSort(array A)
	 for i from 1 to length[A]-1 do
			 value := A[i] 
			 j := i-1
			 while j >= 0 and A[j] > value do
					 A[j+1] := A[j]
					 j := j-1
			 done
			 A[j+1] = value
	 done

다음은 Swift로 작성된 삽입 정렬입니다.

func insertionSort<T: Comparable>(var list: Array<T>) -> Array<T> {
	for i in 1..<list.count {
		var j = i
		while(j > 0 && list[j] < list[j-1] ) {
			swap(&list[j], &list[j-1])
			j--
		}
	}
	return list
}

참고자료