php选择排序法 实现

原创 木鱼  2017-09-15 07:30  阅读 778 次

选择排序的思路是每次选择一个最小(或最大)的值, 存放到数组的起始位置, 直到全部待排序的元素排完.

代码加注释的方式

<?php 


// 选择排序法
function selectSort ( $arr )
{
	$len = count($arr);

	// $len-1, 可以减少一次没有意义的循环, 因为$j=$i+1, $j<$len
	// 如果数组长度为3的话, 当$i等于2的时候, $j就等于3, 3<3肯定是不成立的... 而且最后一个数已经没有人可以比较大小了啊
	for ($i=0; $i < $len-1; $i++) { 
		// 假装$i是最小值
		$min = $i;
		// 循环比较$i, 看看有没有比他更小的
		// 因为$i是数组最左边的值, 所以直接跳过$i开始循环即可
		for ($j=$i+1; $j < $len; $j++) { 
			
			if ( $arr[$j] < $arr[$min] ) {
				$min = $j;
			}
			
		}

		// 看看$min有没有变化, 有变化就是说有更小的值了, 需要交换一下位置
		if ( $min != $i ) {
			$tmp = $arr[$min];
			$arr[$min] = $arr[$i];
			$arr[$i] = $tmp;
		}
	}

	return $arr;
}

$arr = [3,3,1,5235,54,7,76,234,2];

var_dump(selectSort($arr));

把可能有疑问的地方都注释了, 可以copy代码自己试一试 

本文地址:https://www.m5yu.com/select-sort.html
关注我们:请关注一下我们的微信公众号:扫描二维码,公众号:木鱼博客
版权声明:本文为原创文章,版权归 木鱼 所有,欢迎分享本文,转载请保留出处!

发表评论