排序3--选择排序

<?php
//选择排序
//原理:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完.


$arr = array_rand(range(1, 100), 10);
shuffle($arr);
$arr = [7,6,5,4,3,2,1];


function select_sort($arr)
{
    $len = count($arr);
    for ($i = 0; $i < $len - 1; $i++) { //循环len次
        $min = $i;
        print_r($i);
        for($j = $i+1;$j<$len;$j++){ //每次找到最小的min
            if($arr[$j] < $arr[$min]){
                $min = $j;
            }
        }

        if($min != $i){
            $tmp = $arr[$min];
            $arr[$min] = $arr[$i];
            $arr[$i] = $tmp;
        }
        print_r("第".($i+1)."次排序后结果".join(',',$arr).'<br>');

    }
    return $arr;

}

$res=  select_sort($arr);
echo join(',',$res);

 

<?php
//选择排序 找到最小的下表,依次放入到最左边

$arr = [7,6,5,4,3,2,1];

function select_sort($arr)
{

    for($i = 0;$i<count($arr)-1; $i++){ //循环次数
        $min = $i; //默认最小的为第一个

        for($j = $i+1;$j<count($arr);$j++){ //$i已经排序好的下标  从他后面依次开始和min下标的比较,最小的给出来
            if($arr[$j] < $arr[$min]){
                $min = $j;
             }
        }

        //如果最小的下表不等于开始的第一个 交换
        if($min != $i){
            $tmp = $arr[$i];
            $arr[$i] = $arr[$min];
            $arr[$min] = $tmp;
        }

        print_r("第".($i+1).'次'.join(',',$arr)."<br>");

    }

    return $arr;
}

echo join(',',$arr);
echo "<br>";
$res = select_sort($arr);
echo join(',',$res);

  

posted @ 2019-08-20 15:18  brady-wang  阅读(240)  评论(0编辑  收藏  举报