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

提示:在查找最小元素时,一定要记录下标的位置

<?php
function select(&$arr)
{
    for($i=0; $i<count($arr)-1; ++$i)
    {
        //假设下标为$i的元素就是最小的数
        $min = $arr[$i];
        $minIndex = $i;
        //取得最小的元素及其下标
        for($j=$i+1; $j<count($arr); ++$j)
        {
            if($min>$arr[$j])
            {
                $min = $arr[$j];
                $minIndex = $j;
            }
        }
        // 最后交换
        $temp = $arr[$i];
        $arr[$i] = $arr[$minIndex];
        $arr[$minIndex] = $temp;
    }
    return $arr;
};
$arr = array(12,5,33,78,96,16,8,57,62);
$res = select($arr);
print_r($res);

结果:Array ( [0] => 5 [1] => 8 [2] => 12 [3] => 16 [4] => 33 [5] => 57 [6] => 62 [7] => 78 [8] => 96 )

发表评论

Close Menu