概念
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。以此类推,直到所有元素均排序完毕
步骤
- 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完
实例
/**
* 选择排序
*
* @param array $arr
* @param int $sort 0.从小打大;1.从大到小
*/
static function selectSort(array &$arr, int $sort = 0): void
{
if (empty($arr)) return;
$count = count($arr);
for ($i = 0; $i < $count - 1; $i++)
{
// 最[小|大]值的下标
$index = $i;
for ($j = $i + 1; $j < $count; $j++)
{
// 设置最[小|大]值的下标
if ($sort){
$index = $arr[$j] < $arr[$index] ? $index : $j;
}else{
$index = $arr[$j] < $arr[$index] ? $j : $index;
}
}
// 设置最小值与$i交换位置
$temp = $arr[$index];
$arr[$index] = $arr[$i];
$arr[$i] = $temp;
}
}
评论/回复