选择排序

在要排序的一组数中,选出最小的一个数与第一个位置的数交换。然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。

$list = array(10,3,5,7,18,11,45,64,74,23,21,6);
$list = selectSort($list)
var_dump($list);

function selectSort($arr) {
//双重循环完成,外层控制轮数,内层控制比较次数
 $len=count($arr);
    for($i=0; $i<$len-1; $i++) {
        //先假设最小的值的位置
        $p = $i;

        for($j=$i+1; $j<$len; $j++) {
            //$arr[$p] 是当前已知的最小值
            if($arr[$p] > $arr[$j]) {
            //比较,发现更小的,记录下最小值的位置;并且在下次比较时采用已知的最小值进行比较。
                $p = $j;
            }
        }
        //已经确定了当前的最小值的位置,保存到$p中。如果发现最小值的位置与当前假设的位置$i不同,则位置互换即可。
        if($p != $i) {
            $tmp = $arr[$p];
            $arr[$p] = $arr[$i];
            $arr[$i] = $tmp;
        }
    }
    //返回最终结果
    return $arr;
}

本文由 一切随风 创作,可自由转载、引用,但需署名作者且注明文章出处。

8 条评论

  1. ziiabsabik
    ziiabsabik

    做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com

  2. vfpxrzjqwk
    vfpxrzjqwk

    夏天和冬天

  3. lrzhpvppxb
    lrzhpvppxb

    封魔纪之赤雷传

  4. gxwytlpdoz
    gxwytlpdoz

    纽约圣诞节

  5. ygxjfyekef
    ygxjfyekef

    寻宝搭档圣诞特别篇

  6. psetnpbfjg
    psetnpbfjg

    武松

  7. htthiqlski
    htthiqlski

    穷养攻略

  8. yneegdswbp
    yneegdswbp

    场景转换稍显突兀,可增加过渡描写。

添加新评论