博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
常用算法Java实现之直接插入排序
阅读量:7071 次
发布时间:2019-06-28

本文共 1091 字,大约阅读时间需要 3 分钟。

  直接插入排序是将未排序的数据插入至已排好序序列的合适位置。
  具体流程如下:
  1、首先比较数组的前两个数据,并排序;
  2、比较第三个元素与前两个排好序的数据,并将第三个元素放入适当的位置;
  3、比较第四个元素与前三个排好序的数据,并将第四个元素放入适当的位置;
   ......
  4、直至把最后一个元素放入适当的位置。
 
  假如有初始数据:25  11  45  26  12  78。
  1、首先比较25和11的大小,11小,位置互换,第一轮排序后,顺序为:[11, 25, 45, 26, 12, 78]。
  2、对于第三个数据45,其大于11、25,所以位置不变,顺序依旧为:[11, 25, 45, 26, 12, 78]。
  3、对于第四个数据26,其大于11、25,小于45,所以将其插入25和45之间,顺序为:[11, 25, 26, 45, 12, 78]。
  .......
  4、最终顺序为:[11, 12, 25, 26, 45, 78]。
 
  直接插入排序是稳定的。直接插入排序的平均时间复杂度为O(n2)。
 
  Java 代码实现如下:( )
1     public void sort(int[] arr) { 2         int tmp; 3         for(int i = 1; i < arr.length; i++) { 4             // 待插入数据 5             tmp = arr[i]; 6             int j; 7             for(j = i - 1; j >= 0; j--) { 8                 // 判断是否大于tmp,大于则后移一位 9                 if(arr[j] > tmp) {10                     arr[j+1] = arr[j];11                 }else{12                     break;13                 }14             }15             arr[j+1] = tmp;16             System.out.println(i + ":" + Arrays.toString(arr));17         }18     }

 

转载于:https://www.cnblogs.com/LeslieXia/p/5808057.html

你可能感兴趣的文章
[Kernel参数]----/etc/sysctl.conf
查看>>
解决springboot启动失败问题:Unable to start embedded container;
查看>>
我的第一个 package
查看>>
Delphi初学者,向万一老师致敬
查看>>
maven工程自动生成web.xml
查看>>
Window下Eclipse+Tomcat远程调试
查看>>
WinRAR命令
查看>>
iOS图片拉伸技巧
查看>>
横向滚动插件
查看>>
Windows Nginx 教程
查看>>
P2093 [国家集训队]JZPFAR(KDTree)
查看>>
初级程序员面试不靠谱指南(二)
查看>>
POJ 3762 The Bonus Salary! 离散 + 费用流
查看>>
反转链表
查看>>
MFC之MessageBox用法
查看>>
Codeforces 813E - Army Creation
查看>>
[CF453E]Little Pony and Lord Tirek
查看>>
sql注入
查看>>
2.8 hashlib模块
查看>>
React 新特性学习
查看>>