평소 알고리즘 공부를 해야지 ~ 해야지 하고 생각하고 있다가.
드디어 정리를 하게 됩니다.
이번에 정리할 알고리즘은 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형 배열을 넘겼습니다.
실행결과 첨부하겠습니다.
'개발 > java,spring' 카테고리의 다른 글
| 스프링 redirect 파마미터 처리 (2) | 2017.03.20 |
|---|---|
| java, jsp 페이징처리 (0) | 2017.03.16 |
| 버블정렬(bubble sort)_자바구현 (0) | 2016.11.08 |
| java 정규식 활용 (Patter, Matcher) (0) | 2016.09.16 |
| java 문자열 구분, 자르기(split) (2) | 2016.09.07 |
| [java]자바 pdf 파일 생성 (2) | 2016.06.03 |
| [java] java Map 같은값이 들어갈경우 (11) | 2016.05.28 |