php之选择排序
思路:
- 假设有n个数据,则需要n-1趟次找出最大值下标并交换;
- 每一趟的比较中,都需要从”剩余数据”中找出最大元素的下标,第一趟剩余数据为n个,第二趟剩余数据为n-1个…;
- 每一趟找出最大值的元素都和”剩余数据”的最后一个元素交换位置。
//直接插入排序
function selectSort($arr)
{
$len = count($arr);
for($i=0;$i<$len-1;$i++)
{
$maxpos = 0;//最大值下标,先假定是第一个
for($j=0;$j<$len-$i;$j++)
{
if($arr[$j]>$arr[$maxpos])
{
$maxpos = $j;
}
}
// 每一趟找出最大值的元素都和"剩余数据"的最后一个元素交换
$temp = $arr[$maxpos];
$arr[$maxpos] = $arr[$len-$i-1];
$arr[$len-$i-1] = $temp;
}
}