출처 : 위키백과 |
- 시간복잡도 : O(n^2)
- 앞에서 부터 차례대로 이미 정렬된 배열 부분과 비교하여, 알맞는 대소관계의 위치에 위치하여 정렬
- 장점 : 쉬운 구현
- 단점 : 배열이 길어질수록
java 구현
원본 배열 생성
[ 64 95 54 82 18 69 43 7 68 29 ]
1차 정렬 [ 64 95 54 82 18 69 43 7 68 29 ]
2차 정렬 [ 54 64 95 82 18 69 43 7 68 29 ]
3차 정렬 [ 54 64 82 95 18 69 43 7 68 29 ]
4차 정렬 [ 18 54 64 82 95 69 43 7 68 29 ]
5차 정렬 [ 18 54 64 69 82 95 43 7 68 29 ]
6차 정렬 [ 18 43 54 64 69 82 95 7 68 29 ]
7차 정렬 [ 7 18 43 54 64 69 82 95 68 29 ]
8차 정렬 [ 7 18 43 54 64 68 69 82 95 29 ]
9차 정렬 [ 7 18 29 43 54 64 68 69 82 95 ]
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 52 53 54 55 56 | public class Insertion_Sort { //난수 생성 메소드 public int[] make_rnd(int size){ //중복값 제거를 위하여 Set으로 값 관리 Set rnd = new HashSet(); int rnd_list[] = new int[size]; for(int i = 0;size>i;i++){ //1~99사이의 난수값 생성 int tmp = (int) (Math.random() * 99)+1; rnd.add(tmp); //중복값 생성시 다시 생성 if (rnd.size() == i + 1) i--; else rnd_list[i]=tmp; } System.out.println("원본 배열 생성"); array_print(rnd_list, size); return rnd_list; } //배열 출력 메소드 public void array_print(int rnd_list[],int size){ System.out.print("[ "); for(int i=0;size>i;i++){ System.out.print(rnd_list[i]+ " "); } System.out.println("]"); } public static void main(String args[]){ int size = 10; Insertion_Sort sort= new Insertion_Sort(); int rnd_list[] = sort.make_rnd(size); //버블정렬 i = 차수 for (int i = 1; size > i; i++) { //j비교 위치 for (int j = 0; i > j; j++) { //2개 값 비교하여 정렬 if(rnd_list[j]>rnd_list[i]){ int tmp[] = new int[size]; System.arraycopy(rnd_list, 0, tmp, 0, j); tmp[j]=rnd_list[i]; System.arraycopy(rnd_list, j, tmp, j+1, i-j); System.arraycopy(rnd_list, i+1, tmp, i+1, size-(i+1)); rnd_list = tmp; break; } } System.out.println(i+"차 정렬"); sort.array_print(rnd_list, size); } } } |
1차 정렬 [ 64 95 54 82 18 69 43 7 68 29 ]
2차 정렬 [ 54 64 95 82 18 69 43 7 68 29 ]
3차 정렬 [ 54 64 82 95 18 69 43 7 68 29 ]
4차 정렬 [ 18 54 64 82 95 69 43 7 68 29 ]
5차 정렬 [ 18 54 64 69 82 95 43 7 68 29 ]
6차 정렬 [ 18 43 54 64 69 82 95 7 68 29 ]
7차 정렬 [ 7 18 43 54 64 69 82 95 68 29 ]
8차 정렬 [ 7 18 43 54 64 68 69 82 95 29 ]
9차 정렬 [ 7 18 29 43 54 64 68 69 82 95 ]
댓글 없음:
댓글 쓰기