반응형

개념

- 적절한 위치에 삽입하는 알고리즘.

  (선택한 인덱스를 기준으로하여 이전에 존재하는 원소를 보고 적절한 위치에 삽입)

- 기본적으로 선택된 위치를 기준으로 앞에 있는 원소들은 이미 정렬되어있다고 가정한다. 

- 데이터가 거의 정렬되어있다면 빠르다.

- 필요할 때만 위치를 변경한다. (시간복잡도가 선택, 버블 정렬과 같지만 더 빠른 이유)

private void insertionSort(int[] list, ParamMap paramMap) {
	int i, j, temp;
	for(i=0; i<list.length; i++ ){
		j = i;
		// 이전 값이 현재 값보다 큰 경우, 위치 변경 발생
		// 현재 값보다 값이 큰 이전 요소가 없을때까지 탐색
		while(j>0 && list[j-1] > list[j]) {				
			temp = list[j-1];
			list[j-1] = list[j];
			list[j] = temp;
			j--;
		}
	}
}

// j >=0 이면 j--에서 에러
// j > 0 && list[j] > list[j+1]은 list[0]이 삽입정렬에서 제외되서 사용못함
// j > 0 && list[j-1] > list[j]는 list[0]도 비교가능

 

 시간복잡도는 O(n^2)

반응형

'Algorithm > 기본' 카테고리의 다른 글

계수 정렬(counting sort)  (0) 2021.05.04
병합 정렬(merge sort)  (0) 2021.04.29
퀵 정렬(quick sort)  (0) 2021.04.28
버블 정렬(bubble sort)  (0) 2021.04.25
선택 정렬(selection sort)  (0) 2021.04.25

+ Recent posts