• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

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 로 넘어 갈수 없다고 생각하고 있습니다..

답변 1

답변을 작성해보세요.

0

네 그럴 경우 0은 스킵됩니다.
하지만 그 다음턴에는 0+1 즉 1로 연산하니 승자가 나올 수 있겠죠.
사실 그 이유로 i = j+1부터 시작하는게 조금 더 낫습니다.