首页
社区
课程
招聘
[分享]世界上最快的排序(很幽默)
发表于: 2010-2-24 01:03 2545

[分享]世界上最快的排序(很幽默)

2010-2-24 01:03
2545
在网上飘来飘去,看到这个题目“世界上最快的排序”,顿时很不服气。再看排序的名字叫做桶排序,感觉非常有喜感。于是研究了一下,写了段实验代码发上来。哈哈。不得不承认,这是一种非常幽默的排序算法,很佩服作者的思维!!!!
有心的话可以baidu一下“桶排序”,但是那解释太学术了。反正我除了“桶排序中的插人排序的期望运行时间为O(n)” 这句话以外,其余的都没看懂。。。

# include <iostream>
# include <malloc.h>
# include <time.h>

using namespace std ;

int main ()
{

        int order[10000] = {0} ;
        int *array, total, i ;

        srand (time (0L)) ;

        cout << endl << "你希望排序元素的个数:" ;
        cin >> total ;

        array = (int *)malloc (total * sizeof (int)) ;

        cout << "随机生成排序前的数如下:" << endl ;
       
        //随机生成元素值并打印
        for (i = 0 ; i < total ; i++)

                cout << (array [i] = rand () % 10000) << '\t' ;

        //开始排序
        for ( i = 0 ; i < total ; i++)

                order [array[i]] ++ ;

       
        //输出结果
        cout << endl << "排序结果如下:" << endl ;

        for ( i = 0 ; i < 10000 ; i++)
                       
                        while (order[i]--) cout<<i<<'\t' ;

               

        free (array) ;

        return 0 ;
}

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 61
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
算法与数据结构里有介绍的。。。
2010-2-24 08:41
0
雪    币: 145
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
就是hash排序,最坏的情况退化为处理冲突时使用的排序。
另外例子中用的是数字小于10000,且没冲突,如果有10000以上的,结果就不对了。 另外这种算法是用空间换来的。 例子中排序3个数也需要分配10000个字节的order
2010-2-24 11:52
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
4
哇 太帅了
看完之后的第一感觉就是空间换时间
这种排序在某些场合(待排列的数不太大)还是非常效率的
时间之大无奇不有  实在佩服!
真是长见识了
2010-2-24 15:39
0
雪    币: 399
活跃值: (38)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
5
不错,不错,哈哈
2010-2-24 16:46
0
雪    币: 133
活跃值: (113)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
6
great!.Wonderful..HEHE
2010-2-24 20:00
0
游客
登录 | 注册 方可回帖
返回
//