插入排序-直接插入排序
来源:互联网 发布:冰箱离墙距离 知乎 编辑:程序博客网 时间:2024/05/16 10:05
1、概念
直接插入排序:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。
2、算法
public static void insertSort(int[] arr) { int length = arr.length; int j, temp; //对整个数组进行检查 for (int i = 1; i < length; i++) { temp = arr[i]; j = i - 1; //当前数与之前已排序数比较,如果小则向前移位查找 while (j >= 0 && temp < arr[j]) { arr[j + 1] = arr[j]; j--; } //找到位置并插入 arr[j + 1] = temp; //输出结果过程 System.out.print(i + "times: "); for (int k = 0; k < length; k++) { System.out.print(arr[k] + " "); } System.out.println(); } }
结果:
source: 8 3 6 5 9 4 10 7 1 2 1times: 3 8 6 5 9 4 10 7 1 2 2times: 3 6 8 5 9 4 10 7 1 2 3times: 3 5 6 8 9 4 10 7 1 2 4times: 3 5 6 8 9 4 10 7 1 2 5times: 3 4 5 6 8 9 10 7 1 2 6times: 3 4 5 6 8 9 10 7 1 2 7times: 3 4 5 6 7 8 9 10 1 2 8times: 1 3 4 5 6 7 8 9 10 2 9times: 1 2 3 4 5 6 7 8 9 10
如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序是稳定的,其时间复杂度O(n^2)。
阅读全文
0 0
- 插入排序--直接插入
- 插入排序------直接插入
- 插入排序---直接插入
- 插入排序--直接插入排序
- 插入排序-直接插入排序
- 【插入排序】直接插入排序
- 插入排序-直接插入排序
- 插入排序:直接插入排序
- 插入排序-直接插入排序
- 插入排序--直接插入排序
- 插入排序-直接插入排序
- 插入排序-直接插入排序
- 排序:直接插入排序
- 排序---直接插入排序
- 排序 -- 直接插入排序
- 排序---直接插入排序
- 排序--直接插入排序
- 排序-直接插入排序
- shell学习(三)-crontab命令
- 设计模式(2) 代理模式 静态代理
- 利用json方式完成工具提示功能
- 143. Reorder List
- 完全背包问题
- 插入排序-直接插入排序
- mysql分库分表
- 【Linux】Linux中借助lockf机制,保证只有一个任务进程在执行
- POJ1952 BUY LOW, BUY LOWER(DP,最长下降子序列不重复计数)
- css鼠标点击的五种状态
- ReactiveSwift源码解析(十一) Atomic的代码实现以及其中的Defer延迟、Posix互斥锁、递归锁
- 版本控制系统GIT和SVN的区别
- 贝叶斯估计分类
- Ubuntu -> VFS:Unable to mount root fs on Unknown-block(0,0)