美文网首页
快速排序

快速排序

作者: _Henry_ | 来源:发表于2017-04-24 16:14 被阅读0次

    测试用例

    $start = microtime();
    $arr=array(5,1,0,3,9,10,59,41,78,56,45,47,12,15,45,11);
    //基础版
    $arr = quickSortBasic($arr);
    // var_dump($arr);
    $end = microtime();
    var_dump($end - $start);
    
    $start = microtime();
    $arr=array(5,1,0,3,9,10,59,41,78,56,45,47,12,15,45,11);
    //优化版
    quickSort($arr,0,count($arr)-1);
    // var_dump($arr);
    $end = microtime();
    var_dump($end - $start);
    

    基本版

    // 基础版
    function quickSortBasic(&$arr){
        if(count($arr)>1){
            # code...
            $temp = $arr[0];
            $small = array();
            $large = array();
            $size = count($arr);
            for ($i=1; $i < $size ; $i++) { 
                # code...
                if($arr[$i] > $temp){
                    $large[] = $arr[$i];
                }else{
                    $small[] = $arr[$i];
                }
            }
            $small = quickSortBasic($small);
            $large = quickSortBasic($large);
            return array_merge($small,array($temp),$large);
        }else{
            return $arr;
        }
    }
    

    优化版

    //优化版
    function quickSort(&$arr,$index,$last){
        if($index < $last){
            $left = $index;
            $right = $last;
            $temp = $arr[$index];
            while ($left < $right) {
                while ($left < $right && $arr[$right] > $temp) {
                    $right--;
                }
                if($left < $right){
                    $arr[$left++] = $arr[$right];
                }
                while ($left < $right && $arr[$left] < $temp) {
                    $left++;
                }
                if($left < $right){
                    $arr[$right--] = $arr[$left];
                }
            }
            $arr[$left] = $temp;
            quickSort($arr, $index , $left - 1);
            quickSort($arr, $left + 1, $last);
        }
    }
    

    相关文章

      网友评论

          本文标题:快速排序

          本文链接:https://www.haomeiwen.com/subject/bsepzttx.html