자바 선택정렬(select sort)
평소 알고리즘 공부를 해야지 ~ 해야지 하고 생각하고 있다가.
드디어 정리를 하게 됩니다.
선택정렬 개념
첫번째 위치의 숫자와
두번째,세번째, 네번째로 계속 뒷자리 숫자와 대소비교를 합니다.
그리고 작은 숫자와 자리를 변경합니다.
예시
초기 데이터 : 8,3,6,2,10,4
실행 :
step01
8,3,6,2,10,4
↑
첫번째 데이터 8을 기준으로 그다음 데이터 3과 비교
3,8,6,2,10,4
8과 3의 자리 변경
그다음 데이터 6과 비교(변화없음)
그다음 데이터 2와 비교(자리변경)
2,8,6,3,10,4
그다음 데이터 10과 비교(변화없음)
그다음 데이터 4와 비교(변화없음)
step02
2,8,6,3,10,4
↑
이다음에는 두번째 위치의 숫자 8부터 대소비교를 시작합니다.
소스코드 첨부합니다.
/**
1. index가 0인것을 시작으로 가장 작은수를 왼쪽부터 채운다.대소비교를 한뒤 인덱스를 알고 있음.(1회 교환함.)
2. for문 1회 회전후, 그다음 for문은 정렬된 값은 제외하고 시작한다. (시작 index가 1씩 커진다는 의미)
*/
public class SelectSort {
Comm comm = new Comm();
void selectSort(int pivot, int[] testArray){
int tempIndex=pivot;
int order = pivot;
if(pivot < testArray.length){
for(int i=pivot; i<testArray.length; i++){
if(testArray[tempIndex]>testArray[i]){
tempIndex = i;
}
}
comm.swapArray(tempIndex, pivot, testArray);
order++;
selectSort(order, testArray);
}
}
}
실행결과 첨부하겠습니다.
질문은 댓글로 남겨주시면 성실하게 답변하겠습니다.
감사합니다.