排序算法之直接插入排序(Java)
2016-03-28 21:28
281 查看
直接插入排序简介
直接插入排序(Insertion Sort)是一种简单直观的排序算法。其工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。直接插入排序过程
1.从第一个元素开始,该元素可以认为已经被排序2.取出下一个元素,在已经排序的元素序列中从后向前扫描
3.如果该元素(已排序)大于新元素,将该元素移到下一个位置
4.重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
5.将新元素插入到该位置后
6.重复步骤2~5
算法实现
/** * @description 对顺序表L作直接插入排序 * @author GongchuangSu * @since 2016.03.28 * @version v1.0 */ public class InsertSort { public static void main(String[] args) { // sqList[0]用作哨兵或临时变量 int[] sqList = { 1000, 50, 10, 90, 30, 70, 40, 80, 60, 20 }; insertSort(sqList); // 输出打印 for (int i = 1; i < sqList.length; i++) System.out.println(String.valueOf(sqList[i])); } /** * 功能:直接插入排序法 */ private static void insertSort(int[] sqList) { int i, j; for (i = 2; i <= sqList.length - 1; i++) { if (sqList[i] < sqList[i - 1]) { sqList[0] = sqList[i]; for (j = i - 1; sqList[j] > sqList[0]; j--) sqList[j + 1] = sqList[j]; sqList[j + 1] = sqList[0]; } } } }
算法分析
时间复杂度
在最好情况下,即要排序的数组本身就是有序的,则其时间复杂度为Θ(n);在最坏的情况下,其时间复杂度为Θ(n2)。
空间复杂度
很明显,其空间复杂度为Θ(n)。稳定性
直接插入排序是稳定的。相关文章推荐
- java中常用的快捷键
- spring-boot 1.3 以上版本使用spring-boot-devtools进行版本升级
- java 编程思想第四版学习随记
- JAVA学习笔记(三)
- java中static用法案例
- 【慕课笔记】2-2 JAVA线程初体验-隋唐演义框架说明
- Spring如何实现自动依赖注入-------autowire
- java第三次作业
- Java对象数组代码案例
- [Java] 作业3答疑
- java中static关键字的作用和用法详解
- java 中对继承实现类的一次重构
- eclipse开发Android时,使用第三方模拟器BlueStacks加速调试
- Java设计模式(八)----代理模式
- java static 归纳
- java事务学习笔记(九)--深度剖析JTA原理与实现
- java split小结(转)
- 关于Java-枚举的总结
- Java生成word文档
- Spring中的@Autowired依赖注入