博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
排序算法之初阶——插入排序
阅读量:4474 次
发布时间:2019-06-08

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

适用场景:

  与选择排序不同,插入排序的时间和初始输入的顺序有关,如果数据接近有序,那么它的时间会很快。

算法思想:

  和选择排序有着相似的地方,同样分为两部分,在左边这部分是已经有序的元素,右边是无序的,每次从右边拿出一个数据放到左边,找到这个数合适的位置将其插入,且有序的元素集合的长度加一,如往复,将所有的元素都完成排序。

特点:

  运行时间和输入有关: 

     如果输入的数据大体上是有序的,那么它的效率是比较高的。

代码实现:

/*     * 排序算法之选择排序 每次选择一个最小的数和当前的未排序的数交换位置,直到最后一个     */    // 一个排序的标准模板:    public void sort(double[] a) {        for (int i = 0; i < a.length; i++){            for (int j = i; j > 0 && less(a[j],a[j-1]) ; j--) {                exch(a, j, j-1);            }        }    }    // 比较两个数组    private static boolean less(double a, double a2) {        // 如果第一个数小于第二个数就会返回true        return a - a2 <= 0;    }    // 交换数组中的两个数    private void exch(double[] a, int i, int j) {        double t = a[i];        a[i] = a[j];        a[j] = t;    }    // 显示数组    private void show(double[] a) {        for (int i = 0; i < a.length; i++) {            StdOut.print(a[i] + "\t");        }    }    // 判断数组是否是有序的    public static boolean isSort(int[] a) {        for (int i = 0; i < a.length - 1; i++) {            if (a[i] > a[i + 1])                return true;        }        return false;    }}

 

 

 

转载于:https://www.cnblogs.com/duheng-biu/p/9755149.html

你可能感兴趣的文章
OO第四次博客作业!
查看>>
HDU 吉哥系列故事——完美队形II 騰訊馬拉松初賽第二輪D題
查看>>
[转]SQL Server 性能调优(io)
查看>>
设计模式学习-每日一记(6.原型模式)
查看>>
LeetCode--018--四数之和(java)
查看>>
Redis消息队列
查看>>
电商网站架构设计
查看>>
http://jingyan.baidu.com/article/4dc40848e7b69bc8d946f127.html
查看>>
WCF netTcp配置
查看>>
数据类型转换
查看>>
Nodejs学习笔记(2) 阻塞/非阻塞实例 与 Nodejs事件
查看>>
什么是FreeMaker
查看>>
设计模式学习笔记(总结篇:模式分类)
查看>>
TCP的三次握手/建立连接
查看>>
Python 教程阅读笔记(一):使用解释器
查看>>
运算符重载
查看>>
SDWebImage 新版接口使用方法
查看>>
android ListView详解
查看>>
软件工程 第一次作业
查看>>
Content Server HA搭建
查看>>