C 桶排序

void bucketSort(int arr[],int size)
{
    int tempArr[10][SIZE] = {0};//
    int max,loop,j=0;
    int bitVal,base=1;
    max = maxVal(arr,size);//数组中最大数字
    
    while(base < max){//遍历各个数的位数
        for(loop =0 ;  loop < size; loop++){
            bitVal = (arr[loop]/base) % 10;//取数字位数
            tempArr[bitVal][j++] = arr[loop];
        }
        cpyToArr(arr,tempArr);//把桶中的数复制回数组
        printArr(arr,size-1);//打印数组
        base *=10;
        j=0;//索引归零
    }
}

int cpyToArr(int arr[],int temp[][SIZE])
{
    int i,j,k=0;
    for(i =0;i < 10;i++){
        for(j=0;j<SIZE;j++){
            if(temp[i][j] != 0){
                arr[k++] = temp[i][j];
                temp[i][j] = 0;
            }
        }
    }
}

int maxVal(int arr[],int length)
{
    int i,max = arr[0];
    for(i=0;i < length;i++){
        if(arr[i] > max){
            max = arr[i];
        }
    }
    return max;
}

 

posted @ 2014-03-15 16:41  ShowJoy  阅读(250)  评论(0编辑  收藏  举报