Java排序算法-直接插入排序
来源:互联网 发布:淘宝卖家不可以更新 编辑:程序博客网 时间:2024/05/16 11:32
基本思想:
直接插入排序的基本操作是将一个记录插入到已经排好的有序表中,从而得到一个新的、记录数增1的有序表。对于给定的一组记录,初始时假定第一个记录自成一个有序序列,其余记录为无序序列。接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,直到最后一个记录插到有序序列中为止
复杂度:
当最好的情况,也就是要排序的表本身就是有序的,此时只有数据比较,没有数据移动,时间复杂度为O(n)。
当最坏的情况,即待排序的表是逆序的情况,此时需要比较次数为:2+3+…+n=(n+2)(n-1)/2 次,而记录移动的最大值也达到了 (n+4)(n-1)/2 次.
如果排序记录是随机的,那么根据概率相同的原则,平均比较和移动次数约为次,因此,得出直接插入排序发的时间复杂度为。从这里可以看出,同样的是时间复杂度,直接插入排序法比冒泡和简单选择排序的性能要好一些。
算法描述:
对一个有n个元素的数据序列,排序需要进行n-1趟插入操作:
第1趟插入,将第2个元素插入前面的有序子序列--此时前面只有一个元素,当然是有序的。
第2趟插入,将第3个元素插入前面的有序子序列,前面2个元素是有序的。
第n-1趟插入,将第n个元素插入前面的有序子序列,前面n-1个元素是有序的。
代码实现:
{
int insertNode,j;
for(int i = 1; i <array.length;i++)
{
insertNode = array[i];
j = i-1;
while(j >=0 && insertNode<array[j])
{
array[j+1] = array[j];
j--;
}
array[j+1] = insertNode;
}
}
参考:http://blog.csdn.net/jianyuerensheng/article/details/51254415
阅读全文
0 0
- Java算法 直接插入排序
- java 直接插入排序算法
- Java直接插入排序算法
- java算法【直接插入排序】
- Java直接插入排序算法
- java排序算法之直接插入排序
- 排序算法之直接插入排序(JAVA)
- Java算法排序之--直接插入排序
- 算法:排序----直接插入排序(Java)
- 排序算法之直接插入排序(java)
- Java排序算法-直接插入排序
- Java排序算法(三):直接插入排序
- 排序算法--直接插入排序(JAVA)
- JAVA排序算法---直接插入排序
- 排序算法之直接插入排序(Java)
- 【排序算法】直接插入排序(java实现)
- 排序算法--Java实现直接插入排序
- Java排序算法-直接插入排序
- Linux CentOS 安装JDK
- PopupWindow小坑:无论偏移多大,不会跑出屏幕。 充满显示上方空间
- List报空指针异常
- Python中的string模块的学习
- 我带你去哪里 XII
- Java排序算法-直接插入排序
- 匹配追踪算法进行图像重建
- openCV Python学习笔记(一)图片的读入,显示与保存
- ORM知多少
- eclipse_svn客户端插件site-1.10.13-1.9.x、site-1.12.x不存在
- 前端ajax,后台java+springmvc实现异步表格局部刷新分页
- 机器学习-GridSearchCV自动调参,RF特征选择
- 开源组件剖析:ShimmerAndroid
- 死锁产生的原因及必要条件