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
随便收藏,请保留本文地址!