『PHP学习笔记』系列五:选择排序

版权声明:本文为博主原创文章,转载注明出处即可。 https://blog.csdn.net/SherlockHolmes_/article/details/83382709

算法原理:

  • 选择排序(Selection sort)是一种简单直观的排序算法。
  • 它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
  • 求得一个数组的最大值的下标,并将这个最大值下标的单元跟最后一个单元进行交换;
  • 然后,继续从剩余数据中取得最大值的下标,并将这个最大值下标的单元跟剩余的最后一个单元交换。
  • 以此类推,直到只剩下一个数据,就不用找了。

代码实现:

<?php
//选择排序算法
//最大值与第一个元素交换的方式
function order1($numbers1) {
	$len1 = count($numbers1); //取得数组长度
	for ($i = 0; $i < $len1 - 1; $i++) {
//外循环
		$max = $numbers1[$i]; //假设当前数组元素既是最大值,当前下标即为最大值下标
		$max_index = $i;
		for ($j = $i + 1; $j < $len1; $j++) {
//内循环
			if ($max > $numbers1[$j]) {
				//将假定的最大值与内循环数组元素进行比较,取出最大值赋值给$max,最大值下标赋值给$max_index
				$max = $numbers1[$j];
				$max_index = $j;
			}
		}
		//将最大值下标的数组元素与假定的最大值元素进行交换,完成最大值与第一个单元的交换过程
		$numbers1[$max_index] = $numbers1[$i];
		$numbers1[$i] = $max;
	}
	return $numbers1; //注意:return放在循环内会终止函数
}
$arr = array(9, 8, 7, 5, 6, 4, 3, 2, 1);
echo "<h2>选择排序</h2>";
echo "<pre>";
print_r(order1($arr));
echo "</pre><hr />";
?>

运行结果:

猜你喜欢

转载自blog.csdn.net/SherlockHolmes_/article/details/83382709