插入排序算法
2021/11/6 17:10:25
本文主要是介绍插入排序算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
原理
类似于插扑克牌的思想,保持手上的牌都是有序的,只需要把新抽的牌插入对应位置即可,从而保证了自己不断比较的部分是有序的,减少比较成本
代码实现
void sort(int *arr, int n) { for (int i = 1; i < n; i++) { for (int j = i; j > 0; j--) { if (arr[j] < arr[j - 1]) { swap(&arr[j], &arr[j - 1]); } else { break; } } } }
优化思路
频繁的交换是没必要的,可以用个temp暂存初始位置的值,把要交换的值往后挪一位,最后在把temp赋值在最终位置上
void sortP(int* arr, int n) //优化的算法 { for (int i = 1; i < n; i++) { int temp = arr[i]; //用临时变量记录初值避开两两交换 for (int j = i; j >= 0; j--) { if (j != 0 && temp < arr[j - 1]) { arr[j] = arr[j - 1]; } else { arr[j] = temp; break; } } } }
评价
是选泡插 三个简单算法里最好用的一种
对几乎有序的数组很有效
这篇关于插入排序算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-28一步到位:购买适合 SEO 的域名全攻略
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign学习入门:轻松掌握微服务通信
- 2024-12-27OpenFeign学习入门:轻松掌握微服务间的HTTP请求
- 2024-12-27JDK17新特性学习入门:简洁教程带你轻松上手
- 2024-12-27JMeter传递token学习入门教程
- 2024-12-27JMeter压测学习入门指南
- 2024-12-27JWT单点登录学习入门指南
- 2024-12-27JWT单点登录原理学习入门