작성
·
213
0
안녕하세요.
선생님은 이중 포문에
j의 초기값을 i로 두었는데요 i + 1로 두는게 더 효율적이지 않나요? minindex의 값은 i일테고 i다음 인덱스부터 비교하는 건데
j가 i의 인덱스를 갖고 있다면
arr[i] < arr[j(즉 i)] 같은걸 비교하니까 비효율적인 루틴하나가 더 추가된 게 아닌가 싶어서요!
static void SortArr(int[] arr)
{
int minindex = 0;
for (int i = 0; i < arr.Length; i++)
{
minindex = i;
for (int j = i + 1; j < arr.Length - 1; j++)
{
if (arr[j] < arr[minindex])
minindex = j;
}
int temp = arr[i];
arr[i] = arr[minindex];
arr[minindex] = temp;
}
}
저는 이렇게 구현해봤는데 선생님이랑 다르니까 좀 불안해지는 느낌이더라구요
또 j가 i+1이라면 arr의 길이 -1만큼 조건식을 둬도 되는 거지요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
최창우님의 질문은 배열 정렬 과정에서 j
의 초기값을 i
로 설정하는 것과 i+1
로 설정하는 것 사이의 효율성에 관한 것이군요. 특히 선택 정렬(Selection Sort) 방식을 사용하여 구현하는 과정에 대한 질문으로 해석됩니다.
이와 관련하여, Sort 연습문제 질문이 있어요에서 비슷한 질문이 나왔었고, 지식공유자께서는 j
의 시작을 i
에서 시작하는 것과 i+1
에서 시작하는 경우에 대한 설명을 해주셨습니다. 지식공유자님은 j
를 i+1
에서 시작하는 것이 약간 더 나은 방법일 수 있다고 언급하셨는데, 이는 첫 번째 요소와 자기 자신을 비교하는 불필요한 과정을 제거하기 때문입니다.
질문의 맥락에서, 최창우님이 제시한 코드는 선택 정렬을 사용하여 배열을 정렬하는 효율적인 접근 방식을 보여줍니다. 여기서 j
가 i+1
에서 시작하는 것은 효율적인 방법이며, 정렬 알고리즘이 여러 가지가 있음을 드러냅니다. 따라서, 저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.