来源: 虚拟现实开发者 作者: 樱 日期: 2005-5-27 9:27:09 |
基2快排实际上是基数排序,因为它速度特别快。是O(n)级的,所以偶叫他基2快排 :) 它的基本原理是桶排,不过大家想必知道桶排有多么吃内存....想要排32位的整数需要4GB的BUFFER....恐怖吧~所以只好以时间换空间~减少空间开销,多画一点时间了。基数排序其实就是多趟桶排。 什么是基数排序?基数大家都应该知道....比如说10进制的基数就是10。我们比较10进制的数是怎么比较的?肯定是先看最高位,然后向个位发展...基数排序和这个原理是一样的。不过我们比较喜欢选择用2的整数次幂作为基数~因为除以2的整数次幂的时候可以用位移~
OK。废话不多说。来说一下基2快排函数的思路(以下都是伪代码)。
我们假设函数入口传入了原数组src以及长度N。那么,肯定要开一个计数器(因为毕竟是基于桶排的嘛~) count,还有一个临时数组temp[N]。我们以2^8作为基数,排序32位整数为例。
for 4 次(i=0,1,2,3)
entry_point=0;//这个变量记录了每个计数器数据经过排列后在数组中的位置
for k = 0 to 256 for k=0 To N } 最后送上例子代码……可能有错……而且大家可以看到偶的语文水平确实8行,欢迎大家拍偶的砖 |