답변 1
1
안녕하세요, 질문&답변 도우미 Soobak 입니다.
일반적인 선택 정렬 코드에서 원소의 비교 부분의 부등호를 반대로 바꾼다면 내림차순이 되는 것은 맞습니다.
하지만, 질문자님께서 작성하신 코드 일부에서 선택 정렬에 대해 잘못 구현하신 부분이 있습니다.
내부 반복문 (j
반복문) 에서, j
는 i + 1
부터 시작해서 배열의 끝까지 진행해야 합니다.
그리고, 최소값을 찾은 다음에 마지막으로 i
위치의 값과 교환해야 합니다.
예시
#include <iostream>
using namespace std;
int main()
{
int scores[4] = {92, 45, 70, 60};
for(int i = 0; i < 4; i++)
{
// 가장 작은 요소의 인덱스를 찾기 위해 i로 초기화
int min_index = i;
for(int j = i + 1; j < 4; j++)
{
if (scores[j] < scores[min_index]) // 오름차순 정렬을 위한 조건
min_index = j;
}
// i번째 위치와 가장 작은 요소 위치를 교환
int temp = scores[i];
scores[i] = scores[min_index];
scores[min_index] = temp;
}
// 정렬된 배열 출력
for(int i = 0; i < 4; i++)
cout << scores[i] << " ";
return 0;
}