排序算法之 - 选择排序

选择排序

选择排序也是重复执行一个动作的流程:从 待排序列表 中查找 最小 的元素,将它与 待排序列表第一个元素进行 交换,交换之后第一个元素进入 已排序列表除去 第一个元素之后的其他元素组成 下一轮的待排序列表,其初始状态如图:

 

第一轮运行流程及结果:

 

 

第二轮运行流程及结果:

 

 

第三轮运行流程及结果:

第四轮运行流程及结果:

第五轮运行流程及结果:

第六轮运行流程及结果:

 

第七轮运行流程及结果:

 

第八轮运行流程及结果:

附PHP实现代码:

<?php

function selection($arrayNeedsSort)
{
    $length = count($arrayNeedsSort);
    for ($i = 0; $i < $length - 1; $i++) {
        $compare = $arrayNeedsSort[$i];
        $pos = $i;
        for ($j = $i + 1; $j < $length; $j++) {
            if ($compare > $arrayNeedsSort[$j]) {
                $compare = $arrayNeedsSort[$j];
                $pos = $j;
            }
        }
        $tmp = $arrayNeedsSort[$pos];
        $arrayNeedsSort[$pos] = $arrayNeedsSort[$i];
        $arrayNeedsSort[$i] = $tmp;
    }

    return $arrayNeedsSort;
}

$array = [5, 9, 3, 1, 2, 8, 4, 7, 6];
$res = selection($array);
echo '<pre>';
print_r($res);

运行结果:
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
    [8] => 9
)

 

posted @ 2019-10-25 20:45  寂地烟火  阅读(97)  评论(0)    收藏  举报  来源