as3实现快速排序

快排思想:
              通过一趟排序将要排序的东东分成独立的2部分,
              这样的结果是一部分的数据比另外一部分的所以数据都要小,
              接着对这两部分数据分别进行快速排序(这个过程有很多种方法,我这里用的是递归),
              之后要排序的东东就排好了。
    代码实现:
    package
    {
            import flash.display.Sprite;
           
            public class Main extends Sprite
            {
    //                var arr:Array = [5,1,4,3,10,0,46];
                    var arr:Array = [49,38, 65, 97, 76, 13, 27 ];
                   
                    public function Main()
                    {
                            getArr();
                            var timeStart:Number = (new Date()).getTime();
                            trace("排序前:"+arr);
                           
    //                                                bubbleSort();//3766ms
                            quickSort(0,arr.length-1);//31ms
                           
                            trace("排序后:"+arr);
                            var timeEnd:Number = (new Date()).getTime();
                            trace('排序用时:'+(timeEnd-timeStart));
                           
                           
                    }
                   
                    private function getArr():void{
                            for(var i:int=0;i<5000;i++){
                                    arr[i] = int(Math.random()*100);
                            }
                    }
                   
                    private function bubbleSort():void{
                            for(var i:int=0;i<arr.length-1;i++){
                                    for(var j:int=arr.length-1;j>i;j--){
                                            if(arr[j]<arr[j-1]){
                                                    var temp:int = arr[j-1];
                                                    arr[j-1] = arr[j];
                                                    arr[j] = temp;
                                            }
                                    }
                            }
                    }
                   
                   
                    private function quickSort(start:int,end:int):void{
                           
                            if(start<0||end>arr.length){
                                    trace('参数不合法');
                                    return;
                            }
                           
                            if(start<end){
                                   
                                    var i:int = start;
                                    var j:int = end;
                                    var base:int = arr[start];
                                    while(i<j){
                                           
                                            while(i<j&&arr[j]>=base) j--;
                                           
                                            if(i<j) {
                                                    arr[i] = arr[j];
                                                    i++;
                                            }
                                           
                                            while(i<j&&arr[i]<=base) i++;
                                           
                                            if(i<j){
                                                    arr[j] = arr[i];
                                                    j--;
                                            }
                                           
                                    }
                                    arr[i] = base;
                                   
                                    quickSort(start,i-1);
                                    quickSort(i+1,end);
                                   
                            }
                    }
            }
    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值