插入排序算法--java

算法简介
  • 将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序
  • 稳定排序
  • 时间复杂度 O(n^2)

基本思想

将n个元素的数列分为已有序和无序两个部分,如下所示:
{{a1},{a2,a3,a4,…,an}}
{{a1⑴,a2⑴},{a3⑴,a4⑴ …,an⑴}}

{{a1(n-1),a2(n-1) ,…},{an(n-1)}}
每次处理就是将无序数列的第一个元素与有序数列的元素从后往前逐个进行比较,找出插入位置,将该元素插入到有序数列的合适位置中。

java代码实现(整形数组)
  • 实现类 Sort.java
public class Sort{
    public static void insertionSort(int[] a){  
        int i,j,key,n=a.length;
        for(j = 1;j < n;j++){
            key = a[j];
            i = j - 1;
            while(i >= 0 && a[i] > key){
                a[i + 1] = a[i];
                i--;
            }
            a[i + 1] = key; 
        }
    }
}
  • 测试类 Test.java
public class Test{
    public static void main(String args[]){
        int a[] ={4,5,36,8,1,22};
        Sort.insertionSort(a);
        for(int i = 0; i < a.length; i++){
            System.out.println(a[i] + " ");
        }
    }
}
  • 输出效果图
insertionsort.PNG
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,766评论 0 33
  • 总结一下常见的排序算法。 排序分内排序和外排序。内排序:指在排序期间数据对象全部存放在内存的排序。外排序:指在排序...
    jiangliang阅读 1,369评论 0 1
  • 一. 冒泡排序(BubbleSort) 基本思想:两个数比较大小,较大的数下沉,较小的数冒起来。 过程: 比较相...
    梦工厂阅读 95,892评论 42 934
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,214评论 0 52
  • 两年前就想去南京,可是懒懒懒,拖了两年一直没行动。上周日晚突然有那么一瞬间超级想去南京,于是周一早上等12306开...
    表格阅读 261评论 0 0