1.简单选择排序(选择排序)
function selectSort($arr, $n)
{
for ($i = 0; $i < $n; $i ++) {
$j = $i;
for ($k = $i + 1; $k < count($arr); $k ++) {
if ($arr[$k] < $arr[$j]) {
$j = $k;
}
}
if ($j != $i) {
$t = $arr[$i];
$arr[$i] = $arr[$j];
$arr[$j] = $t;
}
}
}
2.堆排序算法(选择排序)
function HeapSort($arr, $n)
{
for ($i = $n / 2 - 1; $i >= 0; $i --)
AdjustHeap($arr, $i, $n - 1);
for ($i = $n - 1; $i > 0; $i --) {
$t = $arr[0];
$arr[0] = $arr[$i];
$arr[$i] = $t;
echo implode(",", $arr) . "\n";
AdjustHeap($arr, 0, $i - 1);
}
return $arr;
}
/**
* 调整堆
*/
function AdjustHeap(&$arr, $s, $m)
{
$t = $arr[$s];
for ($j = 2 * $s + 1; $j <= $m; $j *= 2 + 1) {
if ($j < $m && $arr[$j] < $arr[$j + 1])
$j ++;
if ($t > $arr[$j])
break;
$arr[$s] = $arr[$j];
$s = $j;
}
$arr[$s] = $t;
}