漫画:插入排序是什么?

简介: 漫画:插入排序是什么?

1.jpg

image.png

插入排序:

public static int[] insertionSort(int[] array){
    if (array.length == 0) return array;
    int current;
    for(int i =0;i<array.length-1;i++){
        current = array[i+1];
        int preindex = i;
        while(preindex >= 0 && array[preindex] > current){
            array[preindex +1] = array[preindex];
            preindex--;
        }
        array[preindex+1] = current;
    }
    return array;
}

image.png

首先还是给你一个动漫图,这样你也容易理解:

image.png

其实从图中你可以感受到插入排序是一个比较简单的排序,没有过多的复杂步骤。它排序的基本原理也非常的简单,对于没有排序的元素,在已排序的元素中从后往前依次扫描,找到合适的位置插入。


其实和人们整理桥牌的方法一样,一张一张的来,将每张牌插入到其他已经有序的牌中的适当位置。


具体的步骤:


步骤1: 从第一个元素开始,该元素可以认为已经被排序;

 

步骤2: 取出下一个元素,在已经排序的元素序列中从后向前扫描;  


步骤3: 如果该元素(已排序)大于新元素,将该元素移到下一位置;  


步骤4: 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;

 

步骤5: 将新元素插入到该位置后;

 

步骤6: 重复步骤2~5。

image.png

image.png


相关文章
|
机器学习/深度学习 存储 算法
【数据结构与算法篇】 手撕八大排序算法之选择排序
【数据结构与算法篇】 手撕八大排序算法之选择排序
65 0
|
搜索推荐 算法 C++
【数据结构与算法篇】手撕排序算法之插入排序与希尔排序
【数据结构与算法篇】手撕排序算法之插入排序与希尔排序
82 0
|
机器学习/深度学习
【手撕插入排序和希尔排序】
插入排序概念 直接插入排序是从一个有序的序列中选择一个合适的位置进行插入,这个合适的位置取决于是要升序排序还是降序排序。 每一次进行排序之后,这段数据都是有序的。
|
搜索推荐 算法
齐姐漫画:排序算法(一)
借用《算法导论》里的例子,就是我们打牌的时候,每新拿一张牌都会把它按顺序插入,这,其实就是插入排序。
152 0
齐姐漫画:排序算法(一)
|
搜索推荐 算法 IDE
齐姐漫画:排序算法(二)之「 归并排序」和「外排序」
那我们借用 cs50 里的例子,比如要把一摞卷子排好序,那用并归排序的思想是怎么做的呢?
180 0
齐姐漫画:排序算法(二)之「 归并排序」和「外排序」
漫画:什么是插入排序?
人们如何进行扑克牌的排序呢? 举个例子,比如我手中有红桃6,7,9,10这四张牌,已经处于升序排列:这时候,我又抓到了一张红桃8,如何让手中的五张牌重新变成升序呢?用冒泡排序,选择排序,亦或是快速排序?
171 0
漫画:什么是插入排序?
|
搜索推荐 算法 Shell
漫画:什么是希尔排序?
像这样逐步分组进行粗调,再进行直接插入排序的思想,就是希尔排序,根据该算法的发明者,计算机科学家Donald Shell的名字所命名。 上面示例中所使用的分组跨度(4,2,1),被称为希尔排序的增量,增量的选择可以有很多种,我们在示例中所用的逐步折半的增量方法,是Donald Shell在发明希尔排序时提出的一种朴素方法,被称为希尔增量。
144 0
漫画:什么是希尔排序?
漫画:什么是选择排序?
我们假定要获得升序数列,冒泡排序的原理是什么呢? 顾名思义,就是把每一元素和下一个元素进行比较和交换,使得较大的元素像气泡一样向右侧移动:
110 0
漫画:什么是选择排序?
|
存储 算法
漫画:什么是归并排序?
举个例子,有A、B、C、D、E、F、G、H一共8个武术家参考参加比武大会。 第一轮,两两一组,有4名选手胜出(四分之一决赛) 第二轮,两两一组,有两名选手胜出(半决赛) 第三轮,仅剩的两人一组,冠军胜出(总决赛)
122 0
漫画:什么是归并排序?