算法基础--插入排序

120 阅读1分钟
有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法


/**
 * 插入排序
 * 原理: 假设左边数组为有序的,插入新元素,继续保持其有序;
 * 以数组每二个元素为新元素开始,与左边元素循环对比,插入对应的位置,此时左边为一个有序的,
 * 再以三个元素为新元素插入左边有序数组中,以此类推
 */
function insertSort($arr){

	$c = count($arr);
	for($i = 0; $i < $c-1;$i++){
		for ($j=$i+1;$j>0;$j--) { 
			if($arr[$j-1] > $arr[$j]){
				//交换位置
				list($arr[$j],$arr[$j-1]) = [$arr[$j-1],$arr[$j]];
			}
		}		
	}
	return $arr;
}