免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4499 | 回复: 1
打印 上一主题 下一主题

插入排序算法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-07-22 17:35 |只看该作者 |倒序浏览
有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序算法。插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序。

插入排序的Java实现:
  1. package com.mianshi.easy;
  2. public class Insert {

  3.     public static void main(String[] args) {
  4.         int[] a = {3,21,2,15,14,16,9,8,7};

  5.         insertSort(a);

  6.         for(int i = 0; i < a.length; i++){
  7.             System.out.print(a[i]+" ");
  8.         }
  9.     }

  10.     //插入排序
  11.     public static void insertSort(int[] a){

  12.         for(int i = 1; i < a.length; i++){
  13.             int temp = a[i];
  14.             int j = i - 1;
  15.             while(j>=0 && a[j]>temp){        //将得到的temp跟前面的数相比,比前面的数小,就把前面的数向后放;大于或等于(稳定的)不交换,直接跳出赋值
  16.                 a[j+1] = a[j];
  17.                 j--;
  18.             }
  19.             a[j+1] = temp;
  20.         }
  21.     }
  22. }

  23. 结果:
  24. 2 3 7 8 9 14 15 16 21
复制代码
算法实现图示:(根据上面实现算法结合图一起看好点)

时间复杂度:平均时间复杂度为。

插入排序不适合对于数据量比较大的排序应用。但是,若需要排序的数据量很小,例如:量级小于千,那么插入排序还是一个不错的选择。

算法稳定性:稳定的排序算法。

插入排序是在一个已经有序的小序列的基础上,一次插入一个元素。当然,刚开始这个有序的小序列只有1个元素,就是第一个元素。比较是从有序序列的末尾开始,也就是想要插入的元素和已经有序的最大者开始比起,如果比它大则直接插入在其后面,否则一直往前找直到找到它该插入的位置。如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序是稳定的。 

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
2 [报告]
发表于 2015-08-12 11:12 |只看该作者
用JAVA做算效率是不是有点低。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP