算法基础--选择排序

187 阅读1分钟

/**
 * 选择排序
 * 原理:第一次,以数组每一个元素,跟后面的n-1个元素对比,记录最小值的下标,然后最小值跟第一个元素交换位置。
 * 第二次,以第二个元素和其后面的元素比较,找到最小值,交换位置;以此类推
 */
function selectSort($arr){
	$c = count($arr);
	for($i = 0; $i < $c-1;$i++){
		$min_pos = $i;
		for ($j=$i+1;$j<$c;$j++) { 
			if($arr[$min_pos] > $arr[$j]){
				$min_pos = $j;
			}
		}
		if ($min_pos !=  $i) {
			//交换位置
			list($arr[$i],$arr[$min_pos]) = [$arr[$min_pos],$arr[$i]];
		}
		
	}
	return $arr;
}