选择排序:
- 第一次从所有元素中选出最小(或最大)的一个元素,存放在序列的起始位置
- 再从剩余的元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。
- 以此类推,直到全部待排序的数据元素的个数为零。
- 选择排序是不稳定的排序方法。
即:每次从未排序的元素中找出 max 或 min 的元素,放到已排元素末尾。
给出php代码:
<?php
//
$arr = array(2, 3, 1, 7, 4, 8, 5, 9, 6);
$len = sizeof($arr); // 数组长度
$times = 0; //控制逐次打印
// 打印初始情况,便于观察
for($i = 0; $i < $len; $i++)
echo $arr[$i];
echo "<br/>";
for($i = 0; $i < $len; $i++){
$index = $i; //初始下标(从第一个元素开始判断)
for($j = $i; $j < $len; $j++)
if($arr[$index] > $arr[$j])
$index = $j;
// 交换
$tmp = $arr[$i];
$arr[$i] = $arr[$index];
$arr[$index] = $tmp;
// 打印每轮情况
$times++;
printf("第 %d 轮:", $times);
for($k = 0; $k < $len; $k++)
echo $arr[$k];
echo "<br/>";
}
for($i = 0; $i < $len; $i++)
echo $arr[$i];
?>
运行结果:
231748596
第 1 轮:132748596
第 2 轮:123748596
第 3 轮:123748596
第 4 轮:123478596
第 5 轮:123458796
第 6 轮:123456798
第 7 轮:123456798
第 8 轮:123456789
第 9 轮:123456789
123456789