排序算法---插入排序

插入排序工作原理:
1.将一个数组拆分成两个数组,一个取第一个元素认为是有序的;剩余的元素认为是无序的
2.每次从无序数组中取出第一个元素与有序数组最后一个元素进行比较
待插入元素比较大,则放有序数组后面;如果比较小,则与有序数组倒数第二个进行比较,对有序数组从后往前进行扫描,直到遇到比他小的位置,插到它的后面
3.依次执行上面的操作,直到序列全部有序

数据演示:

待排序序列:10 7 15 2 5 27 13 

第0轮:【10】 7 15 2 5 27 13   //循环i=1  当前比较元素下标i 
	
第1轮:【7 10】 15 2 5 27 13

第2轮:【7 10 15】 2 5 27 13

第3轮:【2 7 10 15】 5 27 13
	
第4轮:【2 5 7 10 15】 27 13

第5轮:【2 5 7 10 15 27】 13

第6轮:【2 5 7 10 13 15 27】

代码实现:

function insertionSort($arr) {
	$len = count($arr);
	if($len<=0) {
		return $arr;
	}
	for($i=1;$i<$len;$i++) {
		$current = $arr[$i];   //无序序列比较值
		$curIndex = $i; //无序序列比较值的下标
		while($curIndex>0 && $arr[$curIndex-1]>$current) {
			$arr[$curIndex] = $arr[$curIndex-1];
			$curIndex--;  //有序序列从后往前进行比较
		}
		$arr[$curIndex] = $current;
	}
	return $arr;
}
print_r(insertionSort($arr));

posted @   米饭!大米饭  阅读(140)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示