c语言 - 无法计算排序超过八个元素



这是我的代码。选择值时,如果我尝试输入 9 个值,它会转储垃圾值。在进行快速排序时也发生了这种情况

#include <stdio.h>

void printArray(int* A, int n) {
for (int i = 0; i < n; i++) {
printf("%d ", A[i]);
}
printf("n");
}
int maximum(int A[],int n) {
int i, max = A[0];
for (i = 1; i < n; i++) {
if (A[i] > max) {
max = A[i];
}
}
return max;
}
void countSort(int A[], int n) {  
int i, max = maximum(A, n);
int count[max + 1], B[n];
for (i = 0; i < max + 1; i++) {
count[i] = 0;
}
for (i = 0; i < max + 1; i++) {
count[A[i]]++;
}
for (i = 1; i < n; i++) {
count[i] += count[i - 1];
}
for (i = n - 1; i >= 0; i--) {
B[--count[A[i]]] = A[i];
}
for (i = 0; i < n; i++) {
A[i] = B[i];
}
}

int main(){
int A[] = {1, 4, 6, 2, 3, 2, 3, 2, 7};
int n = 9;
printArray(A, n); // Printing the array before sorting
countSort(A, n);  // Function to sort the array
printArray(A, n); // Printing the array before sorting
return 0;
}

此代码使用错误的限制:

for(i=0;i<max+1;i++) {
count[A[i]]++;
}

它有效地遍历A的元素, 具有n元素,而不是max+1

最新更新