알고리즘
선택정렬
개발 로그를 쌓고 싶은 블로거
2018. 11. 5. 00:31
선택정렬은 첫번째에 인덱스의 값을 선택후 내부 반복을 통해 ‘최소값’을 찾는다. 오른쪽으로 계속 이동하여 ‘최소값’일 경우 위치를 스왑한다.
[10 , 8 , 3 , 1, 5]가 있다고 가정한다.
최초로 10이 선택되어 진다. [8,3,1,5] 에서는 최소값이 1이다.
즉 선택된 ’10’은 8부터 시작해 최소값 인 ‘1’과 자리를 바꾸게 된다.
1회전 결과 -> [1,8,3,10,5]
두번째는 8이 선택되어 진다.
[3,10,5] 에서 최솟값은 ‘3’이다. 8과 3이 자리를 바꾸게 된다.
2회전 결과 -> [1,3,8,10,5]
3번째는 다시 8이 선택되어 진다.
[10,5] 에서 최솟값은 ‘5’이다. 8과 5가 자리를 바꾸게 된다.
3회전 결과 -> [1,3,5,10,8]
4번째는 10이 선택되어 진다.
8과 자리를 바꾸게 된다.
4회전 결과 -> [1,3,5,8,10]
for(int i=0; i<n-1; i++) {
int min = i;
for(int k=i+1; k<n; k++) {
//최소값을 찾아주는 과정
if(list[k] < list[min]) {
min = k;
}
}
int temp = list[i];
list[i] = list[min];
list[min] = temp;
}