插入排序——直接插入排序
2015-10-11 23:14
267 查看
一.插入排序的基本思想
将一个记录插入已排序好的有序表中,从而得到一个新的记录数加1的有序表。
要点:设立哨兵,作为临时存储和判断数组边界之用。所谓的哨兵,就是即将插入的记录。
二. 示例
![](https://img-blog.csdn.net/20151011224559116?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
如果碰见相等的元素,会被插到后面,所以,相等元素的前后顺序没有改变,插入排序是稳定的。
三.算法实现
O(n^2)
将一个记录插入已排序好的有序表中,从而得到一个新的记录数加1的有序表。
要点:设立哨兵,作为临时存储和判断数组边界之用。所谓的哨兵,就是即将插入的记录。
二. 示例
如果碰见相等的元素,会被插到后面,所以,相等元素的前后顺序没有改变,插入排序是稳定的。
三.算法实现
public void insertSort(int[] array){ for (int i = 1; i < array.length; i++) { int currentVal = array[i]; //设置哨兵 int position = i; //即将插入的位置 for(int j=i-1; j>=0; j--){ if(array[j]>currentVal){ array[j+1] = array[j]; //如果前一个元素比后一个元素大,就往后移 position = j; }else{ break; } } array[position] = currentVal; //插入元素 } }四.时间复杂度
O(n^2)
五.适用场景
直接插入排序更适合于原始记录基本有序的情况相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树