php之编程思想(选择排序)

定义:

选择排序(selection sort):是一种简单直观的排序法。原理是每次从待排序的数组中取出最小(或最大)的一个元素,

存放在序列的起始位置,知道全部待排序的数据排序完。

算法思路:

  1. 假设第一个元素为最小元素,记下下标。
  2. 寻找右侧剩余的元素,如果有更小的,从新记下最新的下标。
  3. 如果第一次记录的最小元素被更改,则交换两个元素。
  4. 往右重复以上步骤,直到元素本身是最后一个。

代码演示:

依次根据序号注释查看,如果不懂嵌套for循环原理,请查看本人的冒泡排序有详解;

$arr = array(1,2,8,4,9,5,3,10,13,12);
$len = count($arr);

//1:确定交换多少次,一次只能找到一个最小的,找数组长度对应的次数
for($i = 0; $i < $len; $i++){
    //2:我们假设,数组的第一个值为最小,赋给最小值变量
    $min = $i;
    for($j = $i+1; $j < $len; $j++){
        //3:数组的最小值和第二个比较,如果不是最小,则把第二个赋给最小值变量
        if($arr[$min] > $arr[$j]){
            $min = $j;
        }
    }
    //4:如果最小值变量已经改变,那么就交换最小值到数组第一个
    if($min != $i){
        $temp = $arr[$i];
        $arr[$i] = $arr[$min];
        $arr[$min] = $temp;
    }
}
print_r($arr);

输出结果:

Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 8 [6] => 9 [7] => 10 [8] => 12 [9] => 13 ) 

但是选择排序是稳定的排序法,比如序列(5,5,3)第一次就将第二一个5与3交换,导致第一个5 挪到第二个5后面。

但是选择排序比冒泡排序来得更简单直观。

如果还有什么不懂,欢迎留言咨询!

我是程序媛willa。

posted @ 2020-07-02 11:41  娓娓到来  阅读(194)  评论(0)    收藏  举报