main함수에서 NumberSort 를 호출하기 전, 재정렬 범위를 정할 때 실수가 하나 있었던 것 같네요.
Score.time 와 Score.complete 둘 중 하나만 달라도 정렬 범위에서 벗어나야 합니다. 그 하나로 인해 둘 사이엔 정렬이 끝났기 때문이죠.
변경 전
else if (Score[i].time != Score[i + 1].time && Score[i].complete != Score[i + 1].complete && count != 0) {
NumberSort(Score, index, index + count, Problem);
count = 0;
}
변경 후
else if ((Score[i].time != Score[i + 1].time || Score[i].complete != Score[i + 1].complete) && count != 0) {
NumberSort(Score, index, index + count, Problem);
count = 0;
}
john6014 7년 전
코드가 좀 더럽긴한데요.. 메인을 제외한 소스는 퀵 정렬 공부하고 스스로 짜보느라 추가된 정렬 소스들이구요
제가 생각하는 예제들로는 정상적인 값이 나오는데 어디서 틀리는건지 모르겟습니다...