选择排序:从第一个下标开始 1对多 比较完最小/最大的放到最小下标 然后再依次比较
<?php
namespace Home\Controller;
use think\Controller;
class ChoiceController extends Controller{
//选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
public function index(){
$arr=array(7,5,0,4,-1);
$this->selectSort($arr);
print_r($arr);
}
function selectSort(&$arr){
//定义进行交换的变量
$temp=0;
$lengh=count($arr);
for($i=0;$i<$lengh-1;$i++){
//假设$i就是最小值
$valmin=$arr[$i]; //$arr[1]
//记录最小值的下标
$minkey=$i; //下标为1
for($j=$i+1;$j<$lengh;$j++){
//最小值大于后面的数就进行交换
if($valmin>$arr[$j]){ //$valmin=$arr[0] $arr[$j]=$arr[1] 7>5
$valmin=$arr[$j]; //执行$valmin=$arr[1] 7 和5 比较后 $valmin=$arr[1]为最小值
$minkey=$j; //重置最小值的下标为 $j 即 $i+1=0+1 = 1 $minkey=1
}
}
//进行交换
$temp=$arr[$i]; //$temp=$arr[0]
$arr[$i]=$arr[$minkey]; //$arr[0]=$arr[1]
$arr[$minkey]=$temp; //$arr[1]=$arr[0]
}
}
}