개발/java,spring
삽입정렬(insert) 알고리즘_자바 구현
Mr.mandu.
2016. 11. 5. 22:43
평소 알고리즘 공부를 해야지 ~ 해야지 하고 생각하고 있다가.
드디어 정리를 하게 됩니다.
이번에 정리할 알고리즘은 insert, 삽입정렬 알고리즘 입니다.
기본적인 개념은
5,4,3,2,1
위와같은 배열이 존재한다고 할때
5,4,3,2,1
↑
두번째 index를 기준으로
이전 숫자와 대소비교를 합니다.
그래서 자기의 위치를 찾습니다.
step01
4,5,3,2,1
이렇게 정렬이 됩니다.
step02
그다음에는 3부터 시작하게 됩니다.
4,5,3,2,1
↑
5가 3보다 크므로 3이 들어갈 위치를 찾습니다.
3과 5비교 하여 정렬을 합니다. 4,3,5,2,1
그리고 3과 4를 비교하여 정렬을 합니다.
결과 3,4,5,2,1
이런식으로 for문이 계속 돌게 됩니다.
/** 1. 기준을 2번째 index로 잡는다. 2. 기준이 되는 값과 바로 이전 값과 비교 3. 이전값이 더 크다면 index가 0~이전index의 값과 비교하여 들어갈 자리를 찾는다. */ class InsertSort { Comm comm = new Comm(); void insertSort(int[] testArray){ int key; int i,j; for(j=1; j< testArray.length; j++){ key = testArray[j]; i= j-1; while(i>=0 && testArray[i]>key ){ // 바로 이전값이 더 크다면 0~이전index값 비 testArray[i+1] = testArray[i]; i = i-1;//index가 0인 자리까지 찾기위해 i-1을 해준다. } testArray[i+1] = key; } } }
실행방법은 main에서 insertSort()함수를 호출하였습니다.
매개변수로 int형 배열을 넘겼습니다.
실행결과 첨부하겠습니다.