-
카테고리
-
세부 분야
게임 프로그래밍
-
해결 여부
미해결
Sort 연습문제 질문이 있어요
23.04.14 08:34 작성 조회수 254
0
// 값 순서대로 정렬하기
static void Sort(int[] scores)
{
for (int i =0; i < scores.Length; i++)
{
//제일 작은 수 찾기 -> 제일 작은 숫자가 있는 index 찾기
int minIndex = i;
for (int j= i; j <scores.Length; j++)
{
if (scores[j] < scores[minIndex])
minIndex = j;
}
// 자리바꾸기 (swap)
int temp = scores[i]; // 값을 덮어씌우면 날라가기 떄문에 임시로 저장 해둔다
scores[i] = scores[minIndex];
scores[minIndex] = temp; // 임시로 저장해둔 값을 다시 minIndex에 옮긴다
}
}
여기서 특히 이부분이 이해가 안되고 있어요
for (int j= i; j <scores.Length; j++)
{
if (scores[j] < scores[minIndex])
minIndex = j;
}
첫번째 루프때 int i = 0이 되고
for 문에서 j=i라고 해서 j도 0이 됩니다
그런다음에 if (scores[j] < scores[minIndex]) 여기에 따라서
scores[0] < scores[0] 이렇게 되는거 아닌가요??
둘다 첫번째 루프고 minIndex도 i의 값을 따르니깐요...
minIndex = j 로 넘어 갈수 없다고 생각하고 있습니다..
답변을 작성해보세요.
0
Rookiss
지식공유자2023.04.14
네 그럴 경우 0은 스킵됩니다.
하지만 그 다음턴에는 0+1 즉 1로 연산하니 승자가 나올 수 있겠죠.
사실 그 이유로 i = j+1부터 시작하는게 조금 더 낫습니다.
답변 1