首页 > php代码 > php 排序算法程序不用递归

php 排序算法程序不用递归

<?php
function quickSort(&$data, $beg, $end) {
    if ($end > $beg) {
        $piv = $data[$beg];
        $k = $beg + 1;
        $r = $end;
        while ($k < $r) {
            if ($data[$k] < $piv) {
                $k++;
            } else {
                $tmp = $data[$k];
                $data[$k] = $data[$r];
                $data[$r] = $tmp;
                $r--;
            }
        }
        if ($data[$k] >= $piv) {
            $k--;
        }
        $tmp = $data[$k];
        $data[$k] = $data[$beg];
        $data[$beg] = $tmp;
        quickSort($data, $beg, $k);
        quickSort($data, $r, $end);
    }
}
function quickSort2(&$data) {
    $stack = array();
    array_push($stack, array(
        0,
        count($data) - 1
    ));
    while (list($beg, $end) = array_pop($stack)) {
        if ($end > $beg) {
            $piv = $data[$beg];
            $k = $beg + 1;
            $r = $end;
            while ($k < $r) {
                if ($data[$k] < $piv) {
                    $k++;
                } else {
                    $tmp = $data[$k];
                    $data[$k] = $data[$r];
                    $data[$r] = $tmp;
                    $r--;
                }
            }
            if ($data[$k] >= $piv) {
                $k--;
            }
            $tmp = $data[$k];
            $data[$k] = $data[$beg];
            $data[$beg] = $tmp;
            array_push($stack, array(
                $beg,
                $k
            ));
            array_push($stack, array(
                $r,
                $end
            ));
        }
    }
}
$data = array(7,6,6,3,8,1,8,1,9,1,3,11,51,1,25); 
//selectSort($data);
//insertSort($data);
quickSort2($data);


文章链接:http://www.phprm.com/code/b9d9031fbfe8171d2ef87ffec854dbec.html

随便收藏,请保留本文地址!

标签:none

发表留言