选择排序
选择排序也是重复执行一个动作的流程:从 待排序列表 中查找 最小 的元素,将它与 待排序列表 的 第一个元素进行 交换,交换之后第一个元素进入 已排序列表,除去 第一个元素之后的其他元素组成 下一轮的待排序列表,其初始状态如图:
- 第一轮运行流程及结果:
- 第二轮运行流程及结果:
- 第三轮运行流程及结果:
- 第四轮运行流程及结果:
- 第五轮运行流程及结果:
- 第六轮运行流程及结果:
- 第七轮运行流程及结果:
- 第八轮运行流程及结果:
附
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
)