• 技术文章 >php教程 >php手册

    php实现快速排序法函数代码

    2016-06-13 11:58:27原创427
    代码1:

    复制代码 代码如下:


    function quicksort($str){
    if(count($str)<=1) return $str;//如果个数不大于一,直接返回
    $key=$str[0];//取一个值,稍后用来比较;
    $left_arr=array();
    $right_arr=array();
    for($i=1;$iif($str[$i]<=$key)
    $left_arr[]=$str[$i];
    else
    $right_arr[]=$str[$i];
    }
    $left_arr=quicksort($left_arr);//进行递归;
    $right_arr=quicksort($right_arr);
    return array_merge($left_arr,array($key),$right_arr);//将左中右的值合并成一个数组;
    }//以下是测试
    $str=array(5,3,8,2,5,9,7,2,1,4,0);
    print_r(quicksort($str));
    ?>


    代码2:

    复制代码 代码如下:


    /* @快速排序法*/
    function quickSort($left,$right,$arr){
    $l = $left;
    $r = $right;
    $pivot = $arr[($left+$right)/2];
    $temp = 0;

    while($l<$r){
    while($arr[$l]<$pivot){
    $l++;
    }
    while($arr[$r]>$pivot){
    $r--;
    }

    if($l>=$r) break;

    $temp = $arr[$l];
    $arr[$l] = $arr[$r];
    $arr[$r] = $temp;

    if($arr[$l]==$pivot) --$r;
    if($arr[$r]==$pivot) ++$l;
    }

    if($l==$r){
    $l++;
    $r--;
    }

    if($left<$r){
    quickSort($left, $r, $arr);
    }elseif($right>$l){
    quickSort($l, $right, $arr);
    }else{
    return $arr;
    }
    }

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:php数组一对一替换实现代码 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 建立文件交换功能的脚本(二)• PHP教程.应用实例2 • php 简单的缓存全站函数介绍• paip.session的调试in php• CI框架源码阅读---------Input.php
    1/1

    PHP中文网