PHP选择排序(Selection sort)算法是一种简单直观的排序算法。
选择排序的工作原理:首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。以此类推,直到所有元素均排序完毕。
比如:这个数组array(4,3,5,1,2)用冒泡排序算法进行升序排列。
第1个循环循环开始,当前排序:4,3,5,1,2
第1趟:假设第1个数是最小值,和后面的第2个数对比,因为第2个数小,所以变为第2个数
第2趟:得到的最小值和后面的第3个数对比,因为第3个数大,所以最小值还是第2个数
第3趟:得到的最小值和后面的第4个数对比,因为第4个数小,所以变为第4个数
第4趟:得到的最小值和后面的第5个数对比,因为第5个数大,所以最小值还是第4个数
然后判断得到数是不是假设的数,不是的话交换最小值和假设第1个数的值,得到1,3,5,4,2
第2个循环循环开始,当前排序:3,5,4,2
第1趟:假设第1个数是最小值,和后面的第2个数对比,因为第2个数大,所以最小值还是第1个数
第2趟:得到的最小值和后面的第3个数对比,因为第3个数大,所以最小值还是第1个数
第3趟:得到的最小值和后面的第4个数对比,因为第4个数小,所以变为第4个数
然后判断得到数是不是假设的数,不是的话交换最小值和假设第1个数的值,得到1,2,5,4,3
第3个循环循环开始,当前排序:5,4,3
第1趟:假设第1个数是最小值,和后面的第2个数对比,因为第2个数小,所以变为第2个数
第2趟:得到的最小值和后面的第3个数对比,因为第3个数小,所以变为第3个数
然后判断得到数是不是假设的数,不是的话交换最小值和假设第1个数的值,得到1,2,3,4,5
第4个循环循环开始,当前排序:4,5
第1趟:假设第1个数是最小值,和后面的第2个数对比,因为第2个数大,所以最小值还是第1个数
然后判断得到数是不是假设的数,不是的话交换最小值和假设第1个数的值,得到1,2,3,4,5
至此排序已经完成。
PHP选择算法代码:
$a=array(4,3,5,1,2);//这里随便创建一个一维数组; $n=count($a);//算出数组的元素总个数; for($i=0;$i<$n-1;$i++){//需要进行的循环次数 $p = $i;//先假设最小的值的位置 for ($j=$i+1;$j<$n;$j++) { $p = $a[$p] <= $a[$j] ? $p : $j;//获取最小值的位置 } if ($p != $i) { // 交换最小值和当前假设最小值的位置 $tmp = $a[$p]; $a[$p] = $a[$i]; $a[$i] = $tmp; } } print_r($a);
目前有 0 条评论