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