as3版经典算法--快速排序算法(一)

来源:互联网 发布:asp数据库管理网页 编辑:程序博客网 时间:2024/06/03 14:52

最近闲来 总结一下as3 版本的一些算法:

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

测试一个10000个元素的数组,快速排序所用时间52ms,希尔排序所用时间92ms

private function quicksort (a :Array, lo :int, hi :int) :void  {    var i :int = lo;var j :int = hi;  while(i<j){while(i<j&&a[i]<=a[j])//以数组start下标的数据为key,右侧扫描{j--;}if(i<j)//右侧扫描,找出第一个比key小的,交换位置{swap(a,i,j);}while(i<j&&a[i]<a[j])//左侧扫描(此时a[j]中存储着key值){i++;}if(i<j)//找出第一个比key大的,交换位置{swap(a,i,j);}}if(i-lo>1){//递归调用,把key前面的完成排序quicksort(a,lo,i-1);}if(hi-i>1){quicksort(a,i+1,hi);//递归调用,把key后面的完成排序}}    private function swap(a :Array,i :int,j:int):void  {  var temp :int;  temp = a[i];  a[i] = a[j];  a[j] = temp;  }



原创粉丝点击