排序算法之插入排序
2016-04-03 22:29
239 查看
插入排序,在数据量大的时候,比冒泡要好。插入排序的思想用摸牌来比喻,会更容易理解:
假设手头上已有1张牌
摸张新牌,和手头上的牌逐个比较,从最后那张开始,小的话,手头上的牌移位
新牌入序列
所以:
步骤一:外层循环,从1开始,假设手头上已经有1张牌了
步骤二:摸一張牌,放在临时区;
步骤三:手头上的牌,从后往前遍历,与临时区的牌比较,手头上的大,那么移位
时间复杂度,与冒泡一样,最好O(n),最坏O(n^2),结果与数据的初始状态有关,初始数据越有序,insertion/bubble就约快
假设手头上已有1张牌
摸张新牌,和手头上的牌逐个比较,从最后那张开始,小的话,手头上的牌移位
新牌入序列
所以:
步骤一:外层循环,从1开始,假设手头上已经有1张牌了
步骤二:摸一張牌,放在临时区;
步骤三:手头上的牌,从后往前遍历,与临时区的牌比较,手头上的大,那么移位
public static void insertSort(int[] a, int length) { int i,j,temp; for(i=1;i<length;i++) { //摸一张牌 temp = a[i]; //手头的牌和新牌比较,大了才移位 for(j=i-1;j>=0 && a[j]>temp;j--) { a[j+1] = a[j]; } //新牌入序列 a[j+1] = temp; } }
时间复杂度,与冒泡一样,最好O(n),最坏O(n^2),结果与数据的初始状态有关,初始数据越有序,insertion/bubble就约快
相关文章推荐
- 页面中图标的使用
- 20145321 《Java程序设计》第5周学习总结
- C++ UI资源
- 笔记---main函数及其他问题
- 腾讯2016实习生笔试编程题 寻找最佳路径
- 数据结构与算法分析(读书笔记):1.引论
- socket编程 单向服务端与客户端通信,仅供参考
- 针对最近笔试的一些排序算法总结(未完待续)
- js如何通过tagname取到标签并改变所有该类标签的样式
- 记录个关于浮点数的比较小小“坑”
- php中this,self,parent三个关键字
- Java并发机制之Volatile关键字
- RESPONSE.ADDHEADER使用实例收集
- 腾讯2016实习生笔试编程题 打印蛇形矩阵
- Machine Learning第六周笔记二:机器学习系统设计
- Fabric自动部署太方便了
- three.js(webGL库)
- leetcode 328. Odd Even Linked List
- javascript的自定义对象
- 9. Palindrome Number