简体   繁体   English

无法计数排序超过八个元素

[英]Unable to count sort more than eight elements

Here is my code.这是我的代码。 While choosing values, if I try to put 9 values it dumps garbage value.在选择值时,如果我尝试输入 9 个值,它会转储垃圾值。 It has happened while doing quick sort as well在进行快速排序时也发生了这种情况

#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;
}

This code uses the wrong limit:此代码使用错误的限制:

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

It effectively iterates through the elements of A , which has n elements, not max+1 .它有效地遍历A的元素,其中有n元素,而不是max+1

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM