2种选择排序算法(php)

来源:互联网 发布:java.io.eofexception 编辑:程序博客网 时间:2024/04/30 00:01

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;}


0 0