zoukankan      html  css  js  c++  java
  • 插入排序算法

    有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序算法。插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序。

    插入排序的Java实现:

     1 package com.mianshi.easy;
     2 public class Insert {
     3 
     4     public static void main(String[] args) {
     5         int[] a = {3,21,2,15,14,16,9,8,7};
     6 
     7         insertSort(a);
     8 
     9         for(int i = 0; i < a.length; i++){
    10             System.out.print(a[i]+" ");
    11         }
    12     }
    13 
    14     //插入排序
    15     public static void insertSort(int[] a){
    16 
    17         for(int i = 1; i < a.length; i++){
    18             int temp = a[i];
    19             int j = i - 1;
    20             while(j>=0 && a[j]>temp){        //将得到的temp跟前面的数相比,比前面的数小,就把前面的数向后放;大于或等于(稳定的)不交换,直接跳出赋值
    21                 a[j+1] = a[j];
    22                 j--;
    23             }
    24             a[j+1] = temp;
    25         }
    26     }
    27 }
    28 
    29 结果:
    30 2 3 7 8 9 14 15 16 21 

    算法实现图示:(根据上面实现算法结合图一起看好点)

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

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

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

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

  • 相关阅读:
    String类可以被继承吗?我们来聊聊final关键字!
    微信小程序中使用阿里ICON图标
    兼容iphone x刘海的正确姿势
    解决ios下部分手机在input设置为readonly属性时,依然显示光标
    react jsx 中使用 switch case 示例
    react 中使用 JsBarcode 显示条形码
    解决IDEA输入法输入中文候选框不显示问题
    svn提交代码失败提示清理(清理失败并且报错信息乱码解决办法)
    css笔记
    修改Mysql数据库的字符集
  • 原文地址:https://www.cnblogs.com/gongxing/p/4667443.html
Copyright © 2011-2022 走看看