桶排序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011815404/article/details/79974807

【分类】


 非比较类排序


【基本思想】

若待排序的值在一个明显有限范围内(整型),可设计有限个有序桶,待排序的值装入对应的桶,桶号就是待排序的值,顺序输出各桶的值。

【特点】


 数据结构:数组

 稳定性:稳定


【复杂度与辅助空间】

最优时间复杂度:O(N),极限情况下每个桶只有一个数据时

 平均时间复杂度:O(N+C),C为桶内排序所花费的时间

 所需辅助空间:O(M),M为所开数组大小


【源程序】

#include<iostream>
using namespace std;
int main()
{
    int n;
    int a[101]={0};
    int num;
    int i,j;
    
    cin>>n;//数组大小
    for(i=1;i<=n;i++)
    {
        cin>>num;//输入数据
        a[num]++;//将等于num的值全部装入第num个桶中
    }
    
    for(i=0;i<100;i++)//输出排序结果
        while(a[i]>0)//相同的整数,重复输出
        {
            cout<<i<<" ";//桶号即值
            a[i]--;//输出一个整数后,个数减1
        }
     
    cout<<endl;
    return 0;
}

阅读更多

没有更多推荐了,返回首页