• 插入排序算法


    插入排序是排序算法中一种经典的排序算法,该算法的时间复杂度最好时为O(n),最差时为O(n^2),空间复杂度为O(1),该算法也是一种稳定的排序算法。该种算法较适合大部分已有序时的排序问题。相比较而言,冒泡排序则更适合较小的序列排序。

    该排序算法的思想是:不断地将当前数字插入到一个有序序列中,直到最后一个数字插入有序序列为止;初始时以第一个数字自成一个序列。

    该算法的一种如下(Java版):

     1 /**
     2  * 插入排序
     3  * @author JiaJoa
     4  * 从第一个元素开始,该元素可以认为已经被排序
     5  * 取出下一个元素,在已经排序的元素序列中从前向后扫描 
     6  * 如果该元素(已排序)大于新元素,将该元素移到下一位置 (和新元素的位置互换)
     7  * 将新元素插入该位置
     8  * 
     9  */
    10 public class Algorithm_InsertSort {
    11 
    12     public static void main(String[] args) {
    13         // TODO Auto-generated method stub
    14         int[] data = new int[]{13,8,4,2,3,5,11,9,7};
    15         Algorithm_InsertSort.insertSort(data);
    16     }
    17     
    18     public static void insertSort(int[] data){
    19         int size = data.length;
    20         for(int i=0;i<size;i++){
    21             int temp=data[i]; //保存已排序的最后一个数值
    22             int j = i;  //保存最后一个数值的下标,从后向前搜索
    23             while(j>=1&&temp<data[j-1]){
    24                 data[j] = data[j-1];
    25                 j--;
    26             }
    27             data[j] = temp;
    28         }
    29         
    30         StringBuilder build  = new StringBuilder();
    31         for(int i:data){
    32             build.append(i+" ");
    33         }
    34         System.out.println(build.toString());
    35     }
    36 
    37 }
  • 相关阅读:
    websocket简易demo
    innerHTML误区
    nuget离线
    vs2017js 方法注释
    Neo私钥到地址
    vant-ui rem问题
    鼠标悬停出菜单
    wangeditor视频
    display:grid
    Python中的循环
  • 原文地址:https://www.cnblogs.com/JiaJoa/p/7778067.html
Copyright © 2020-2023  润新知