php快速排序

简介: 1.数据结构 //调用 $test_array = array (12, 5, 10, 9, 100, - 10 ); $listarray = array (); $sort_array = testsort ( $test_array, 2, 0, 5 ...

1.数据结构

   //调用
    $test_array = array (12, 5, 10, 9, 100, - 10 );
    $listarray = array ();
    $sort_array = testsort ( $test_array, 2, 0, 5 );
   
    function testsort($array, $index, $begin, $end) {
        global $listarray;
        $listarray = $array;
        if ($begin < $end) {
            $index = quicksort2 ( $listarray, $index, $begin, $end );
            echo 'left<br>';
            testsort ( $listarray, 0, $begin, $index - 1 );
            echo 'right<br>';
            testsort ( $listarray, $index + 1, $index + 1, $end );
        }
        return $listarray;
    }

   //快速排序(快速检索为数组第一个)
    function quicksort1($array, $begin, $end) {
        //echo '<br>输入';
        //print_r($array);
        global $listarray;
        $compare = $array [$begin];
        while ( $begin < $end ) {
            while ( $begin < $end && $array [$end] >= $compare )
                $end --;
            $array [$begin] = $array [$end];
            while ( $begin < $end && $array [$begin] <= $compare )
                $begin ++;
            $array [$end] = $array [$begin];
        }
        $array [$begin] = $compare;
        //echo '<br>输出';
        //print_r($array);
        $listarray = $array;
        return $begin;
    }
   
   
    //快速排序(检索样本为数组第f_index个)
    function quicksort2($array, $f_index, $begin, $end) {
        global $listarray;
        $compare = $array [$f_index];
        while ( $begin < $end ) {
            while ( $begin < $end && $array [$end] >= $compare )
                $end --;
            $array [$f_index] = $array [$end];
            $f_index = $end;
            while ( $begin < $end && $array [$begin] <= $compare )
                $begin ++;
            $array [$f_index] = $array [$begin];
            $f_index = $begin;
        }
        $array [$f_index] = $compare;
        $listarray = $array;
        return $f_index;
    }

2.php数组

   $test_array = array (12, 5, 10, 9, 100, - 10 );
   $sort_array = testsort ( $test_array, 2, 0, 5 );

//快速排序(数组方式)
    function quicksort($array) {
        $count = count ( $array );
        if ($count <= 1)
            return $array;
        $key = $array [0];
        $left_array = array ();
        $middle_array = array ();
        $right_array = array ();
       
        foreach ( $array as $each ) {
            if ($key > $each) {
                //入栈
                array_push ( $left_array, $each );
            } else if ($key == $each) {
                //直接插入
                $middle_array [] = $each;
            } else {
                $right_array [] = $each;
            }
        }
        $left_array = quicksort ( $left_array );
        $right_array = quicksort ( $right_array );
       
        $array = array_merge ( $left_array, $middle_array, $right_array );
        return $array;
    }



目录
相关文章
原生php实现列表接口+分页接口+排序接口组合使用+包括测试数据(不加任何封装)
原生php实现列表接口+分页接口+排序接口组合使用+包括测试数据(不加任何封装)
原生php实现列表接口+分页接口+排序接口组合使用+包括测试数据(不加任何封装)
|
3月前
|
SQL PHP 数据库
|
7月前
|
PHP
php数组随机排序
PHP中对数据进行随机排序
|
4月前
|
算法 小程序 PHP
PHP实现递归排序
在leetcode练习算法的时候,发现一个算法需要用到递归。 递归是个好东西,但是吧,一般不理解其精髓的,很难写出一个好的递归。 递归其实就是函数本身直接或者间接地调用自身的一种编程方法(我自己调用我自己~),也可以理解为有反复执行过程的一种方法,这个就与循环非常相似,但是递归调用的函数中必须要有终止条件,也就是一定
28 1
|
9月前
|
JSON PHP 数据格式
php清洗数据实战案例(2):根据键值进行二维数据的对象数组的排序
php清洗数据实战案例(2):根据键值进行二维数据的对象数组的排序
55 0
|
9月前
|
PHP
PHP 多维数组排序
PHP 多维数组排序
|
PHP
PHP常用排序
PHP常用排序
57 0
|
PHP
PHP数组排序 解决数值型版本号排序错乱
PHP数组排序 解决数值型版本号排序错乱
103 0
|
存储 算法 程序员
bitmap算法的PHP实现,快速去重排序,数据压缩储存
因为电路的逻辑只有0和1两个状态,这里的0和1并不是数字的0和1,0和1是表示两种不同的状态,0表示低电平,1表示高电平。因为计算机是由无数个逻辑电路组成的,只能根据0和1的无限位数和组合来表达信息。 电脑只认识0和1这两个数字,所有的数据在电脑中都是以0和1组成的编码存储的,这样的编码叫做二进制。一个0或一个1就叫做一个位 最初的计算机性能和存储容量都比较差,所以普遍采用4位BCD编码(这个编码出现比计算机还早,最早是用在打孔卡上的)。
319 0