void selsctionsort(int list[], int last) {
for (int current = 0; current < last; current++)
exchange(list, current, last);
return;
}
void exchange(int list[], int current, int last) {
int smallest = current;
for (int walker = current + 1; walker < last; walker++) {
if (list[walker] < list[smallest]) {
smallest = walker;
}
}
int temp = list[current];
list[current] = list[smallest];
list[smallest] = temp;
return;
}
이렇겐데 exchange 함수에서 smallest를 walker로저장하는거 까진알겟는데
그밑에서 갑자기 값을 왜 current와 smallest 값을 바꿔요??
if문으로 walker랑 smallest를 비교했으면
walker 변수랑 smallest를 바꿔야되는거아니에요??
current는 walker-1값이라 바꾸면안될거같은데.. 내가 잘못생각하는건가??
설명좀해줄 멋쟁이 고추큰프갤형님구합니다 ㅠㅠ
정확하게 말하면 current와 smallist를 바꾸는게 아니고 이 두 변수를 첨자로 사용해서 얻는 list 배열의 값을 바꾸는거지.
그리고 if에서 참이된 조건들은 smallest= walker이 실행되는데 smallist랑 walker랑 바꾸면 말이 안되잖아. 1이랑 1을 바꾸면 1이랑 1이겠지
선택 정렬에 대한 개념 자체를 이해 못한거 같은데, 댓글이든 글이든 니가 이해한 선택정렬을 먼저 써서 정리를 시도해봐.그리고 다시 질문 올리셈