编辑代码

#include<stdio.h>
 
#define Max_len 9     
 

void Show(int  arr[], int n)
{
    int i;
    printf("数组为 "); 
    for ( i=0; i<n; i++ )
        printf("%d  ", arr[i]);
    printf("\n");
}
 int GetminVal(int* arr,int len)
 {
 	int minVal=arr[0];
 	for(int i=1;i<len;i++)
 	{
 		if(arr[i]<minVal)
 		minVal=arr[i];
	 }
     printf("\n\n\n最小值为%d     ",minVal);
     return minVal;
 }

int GetMaxVal(int* arr, int len)
{

    int maxVal = arr[0]; 
    
    for(int i = 1; i < len; i++)  
    {
        if(arr[i] > maxVal)
            maxVal = arr[i];
    }
    printf("\n\n\n最大值为%d     ",maxVal);
    return maxVal;  
}
 

void BucketSort(int* arr , int len)
{
    int tmpArrLen = GetMaxVal(arr , len) + 1;
    int tmpLen = GetminVal(arr , len) + 1;
    int tmpArr[tmpArrLen];  
    int i, j;
    
    for( i = 0; i < tmpArrLen; i++)  
        tmpArr[i] = 0;
    
    for(i = 0; i < len; i++)   
        tmpArr[ arr[i] ]++;
    
    for(i = 0, j = 0; i < tmpArrLen; i ++)
    {
        while( tmpArr[ i ] != 0) 
        {
            arr[j ] = i; 
            j++;
            tmpArr[i]--;
        }
    }
}
 
int main()
{   


    int arr_test[Max_len] = { 11, 9, 20, 56, 42, 3, 7, 15, 16};
    
    
    Show( arr_test, Max_len );
    
    BucketSort( arr_test,  Max_len);
    
    Show( arr_test, Max_len );

    return 0;
}