반응형
- 삽입 정렬
- 비교할 값을 key로 잡고 앞쪽 부터 key값과 비교하여 key 값이 위치할 index에 값을 입력한다.
- 선택 정렬이나 거품 정렬과 같은 O(n^2) 알고리즘에 비교하여 빠르다.
public class InsertionSort {
/**
* 뒤 쪽 부터 시작하여 앞에 값들을 비교한다.
* @param arr
*/
public static void insertionSort(int[] arr)
{
for(int index = 1 ; index < arr.length ; index++){
int temp = arr[index]; // 비교할 key값
int aux = index - 1; // 비교될 첫번쨰 index
// 비교할 index 가 없을때 까지 && 비교할 key 값이 작을때까지 계속
// arr[aux] > temp 부호를 바꾸면 내림차순이 된다.
while( (aux >= 0) && ( arr[aux] > temp ) ) {
arr[aux+1] = arr[aux];
aux--;
System.out.println(Arrays.toString(arr));
}
arr[aux + 1] = temp;
}
System.out.println("결과 : " + Arrays.toString(arr));
}
public static void main(String[] args) {
int[] arr = {1 ,4, 2, 8, 10, 7, 3, 9, 5, 6};
insertionSort(arr);
}
}
[1, 4, 4, 8, 10, 7, 3, 9, 5, 6]
[1, 2, 4, 8, 10, 10, 3, 9, 5, 6]
[1, 2, 4, 8, 8, 10, 3, 9, 5, 6]
[1, 2, 4, 7, 8, 10, 10, 9, 5, 6]
[1, 2, 4, 7, 8, 8, 10, 9, 5, 6]
[1, 2, 4, 7, 7, 8, 10, 9, 5, 6]
[1, 2, 4, 4, 7, 8, 10, 9, 5, 6]
[1, 2, 3, 4, 7, 8, 10, 10, 5, 6]
[1, 2, 3, 4, 7, 8, 9, 10, 10, 6]
[1, 2, 3, 4, 7, 8, 9, 9, 10, 6]
[1, 2, 3, 4, 7, 8, 8, 9, 10, 6]
[1, 2, 3, 4, 7, 7, 8, 9, 10, 6]
[1, 2, 3, 4, 5, 7, 8, 9, 10, 10]
[1, 2, 3, 4, 5, 7, 8, 9, 9, 10]
[1, 2, 3, 4, 5, 7, 8, 8, 9, 10]
[1, 2, 3, 4, 5, 7, 7, 8, 9, 10]
결과 : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
반응형
'Tech > 알고리즘' 카테고리의 다른 글
퀵 정렬(Quick Sort) (0) | 2020.06.02 |
---|---|
선택정렬(SelectionSort) (0) | 2020.06.01 |
버블정렬 (BubbleSort) (0) | 2020.06.01 |
2진 탐색 트리 알고리즘 (Binary Search Tree) (0) | 2020.05.26 |
2진 탐색 알고리즘 (Binary Search Algorithm) (0) | 2020.05.26 |
댓글