336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
삽입 정렬은 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘이다.
정렬 과정 (N개의 정렬을 할 숫자가 있다고 가정)
1. 한 개의 값을 포함하는 목록으로 시작한다.
2. 두 개의 값을 비교하고, 적합한 위치에 삽입한다.
3. 세 개의 값을 처음 두 개의 값과 비교하여 위치에 삽입한다.
두 가지의 버전으로 작성하였다. 하나는 재귀를 이용한. 하나는 단순 for문이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | public class InsertSort { private static int[] array; public static void init(int length) { array = new int[length]; for (int i = 0; i < length; i++) { array[i] = (int) (Math.random() * 45) + 1; } } private static void swap(int[] array, int source, int target) { int tmp = array[source]; array[source] = array[target]; array[target] = tmp; } public static void printArray(int[] array) { for (int i : array) { System.out.print(i + " "); } System.out.println(); } public static void main(String[] args) { init(10); printArray(array); insertSort(array); printArray(array); } public static void insertSort(int[] array) { insertSort(array, 1); } public static void insertSort(int[] array, int start) { if(start < array.length) { int standard = array[start]; int compareIndex = start-1; while(compareIndex >= 0 && array[compareIndex] > standard) { array[compareIndex + 1] = array[compareIndex]; compareIndex--; } array[compareIndex + 1] = standard; insertSort(array, start+1); } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | public class InsertSortExample { public static void main(String[] args) { int[] arr = { 10, 2, 6, 4, 3, 7, 5 }; for(int i : arr) { System.out.print(i + " "); } System.out.println(); for(int i=1; i < arr.length; i++) { int standard = arr[i]; int compareIndex = i-1; while(compareIndex >= 0 && standard < arr[compareIndex]) { arr[compareIndex+1] = arr[compareIndex]; compareIndex--; } arr[compareIndex + 1] = standard; } for(int i : arr) { System.out.print(i + " "); } } } |
'알고리즘 및 자료구조 > 정렬' 카테고리의 다른 글
선택 정렬(Selection Sort) (0) | 2016.03.02 |
---|---|
거품 정렬(Bubble Sort) (0) | 2016.03.02 |