排序算法高手帮忙选一种最快的排序方法

情况是这样的:
开始只有一个数字,程序运行一段时间产生新的数字,再运行一段时间产生新数字。
要求新数字产生之前的数字按顺序排列存储在一个数据结构内,新产生的数字放入到排好序的排列中。
新产生数字的特点是与上次插入的数字大小接近的概率是一半,和上次插入数字无关的概率是一半。并且经常有插入的几个数字的大小差不太多。
求最快的算法。不用考虑空间。
还有一个特点就是数据量不大,顶多100个,要求即时性很高的程序

第1个回答  2013-02-03
内存排序算法中最常用的算法是快速排序算法,时间复杂度是Onlogn,其它的几个算法,如插入排序、堆排序的时间复杂性都是这个值。
正常排序问题可以用堆排序,或者快排序,但这些算法实际上都是在数据队列已知的情况下的算法,你实际需要的是一个记录插入效率较高的算法,插入排序应该也不错的。
当然也可以进行一定优化,就是在产生数值有一定范围的情况下对数值区间进行分桶,产生数值后直接在指定的桶中应用以上排序算法。
另外,用数组的效率要比链表高本回答被提问者和网友采纳
第2个回答  2013-02-03
数据量不大的话,随便什么排序都行啊,只要你自己就行。你想,现在的电脑运行速度很快,尽管运行一个程序分别需要时间为0.001秒和0.1秒,两者相差100倍,但在使用者来看,似乎没有什么区别的。
要说到运行效率最高,速度最快的算法,可以采用堆排序的方法。
详见:
http://baike.baidu.com/view/157305.htm
http://zh.wikipedia.org/zh-cn/%E5%A0%86%E7%A9%8D%E6%8E%92%E5%BA%8F追问

不行 游戏编程 每秒钟得四五十次帧循环 排序放在一个帧循环的一步。。。

相似回答