桶排序

先看例子:

/* 桶排序 */

#include <stdio.h>

#define N 10

void sort(int arr[],int n)
{
    int temp[N+1]={0};
    int i,j;
    for(i=0;i<n;i++)
    {
        temp[arr[i]]++;
    }
    j=0;
    for(i=0;i<N+1;i++)
    {
        while(0!=temp[i])
        {
            arr[j++]=i;
            temp[i]--;
        }
    }   
}

int main()
{
    int i;
    int arr[10]={2,3,1,9,7,0,5,4,0,2};
    sort(arr,10);
    for(i=0;i<10;i++)
        printf("%d\t",arr[i]);
    return 0;   
}
//输出:
0   0   1   2   2   3   4   5   7   9   

优点:

排序快速,时间复杂度是O(n)

缺点:

对待排序的数有要求(大小不超过N的正整数),如果N太大,则内存会占用很多

点赞