빠른 정렬의 최악의 경우를 경험하고 싶습니다. 따라서 내림차순으로 배열을 생성합니다. 빠른 정렬을 사용하여 정렬 한 후 배열의 첫 번째 요소는 가비지가되고 때때로 예상대로 0이되는 경우가 있습니다. 첫 번째 요소는 모든 요소의 순서가 슬라이드 쓰레기가되면, 두 번째 요소는 0이되고, 세 번째 요소는 1 명 등이된다 여기 내 코드 : 호어의 파티션 구성표 사용빠른 정렬이 일치하지 않습니다.
void generateDescendingArray(int *arr, int n) {
for(int i = n - 1; i >= 0; i--) {
arr[n-i-1] = i;
}
}
void quickSort(int *A, int start, int end) {
if(end > start) {
int s = partition(A, start, end); //split position
quickSort(A, start, s - 1); //sort before the split
quickSort(A, s + 1, end); //sort after the split
}
}
int partition(int *A, int start, int end) {
int pivot = A[start];
int i = start;
int j = end + 1;
do {
do { i++;
} while(pivot > A[i]);
do { j--;
} while(pivot < A[j]);
swap(&A[i], &A[j]);
} while(j > i);
swap(&A[i], &A[j]); //undo last swap when i >= j
swap(&A[start], &A[j]);
return j;
}
int main() {
int A[n];
generateDescendingArray(A, n);
quickSort(A, 0, n);
return 0;
}
사용하지 마십시오을'할 {...} 동안 (J> 전)'- 만들기 무엇이든하기 전에'i
두 번째 실행 후에 동일한 입력이 다른 출력을 제공하는 이유를 이해하지 못합니다. – InstantCrush
다른 문제는'quickSort()'호출입니다. 첫 번째 색인과 마지막 색인을 사용하기 때문에'quickSort (A, 0, n-1); '이어야합니다. –