插入排序:最直观的排序算法

1.算法的简单原理介绍

插入排序(Insertion-Sort)是一种最简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。也就是说,他是基于比较的排序。就是通过比较数组中的元素,看谁大谁小,根据结果来调整元素的位置。因此,对于这类排序,就有两种基本的操作:

①比较操作;

②交换操作。

2.插入排序的实现步骤

  1. 将第0个元素开始,该元素可以认为已经排序完成;

  2. 从下一个元素开始,从排序完成的元素开始由后往前扫描;

  3. 如果已经排序完成的元素大于新元素,则新元素前移;

  4. 重复3的步骤,直到已排序元素小于等于新元素;

  5. 将新元素插入到该元素后面;

  6. 重复以上步骤(2-5);

以上文字读起来可能比较难以理解,通过下面的动态图可以更好的理解。

简言之,就是从前往后,将小数据元素往前移。

3.插入排序的程序实现

举例分析如下:

以5,3,2,3排序过程如下:

---------------------------------------------------------------------------------------------------------------

第一趟:3 5 2 3

第0个元素5认为是排序完成的,从第1个元素开始,第1个元素和第0个元素比较,第1个元素小,所以前移;

---------------------------------------------------------------------------------------------------------------

第二趟:2 3 5 3

第2个元素2跟第1个元素5比较,小,所以第二个元素前移,再与第0个元素比较,还小,所以再前移;

---------------------------------------------------------------------------------------------------------------

第三趟:2 3 3 5

第3个元素,与第2个元素比较,小,所以第三个元素前移,再与前一个元素比较,不小于,所以不动,完成排序。

---------------------------------------------------------------------------------------------------------------

4.最后总结:

插入排序,就是玩儿牌的过程,在抓牌的时候,放牌的过程中就完成了一次排序,会打牌的朋友可以回想一下这个过程。

(0)

相关推荐

  • Python|概述“冒泡算法”

    引言在生活中,水中的气泡常常冒出水面,似乎它们会自动排序,其实在算法排序中,也有着一种类似的算法,这就是今天要引入的算法-"冒泡算法".冒泡算法,顾名思义,就是保证每个数据像水中的 ...

  • 这个世界需要秩序——认识排序算法(一)

    今天我们来介绍几种常见的排序算法. 现在我们手上有一些杂乱的数据,看看这些排序算法是如何工作的. 选择排序 一句话来概括选择排序算法:从需要排序的数中选出最小的那一个,把它与最左边的数字交换.然后对剩 ...

  • Python|调换位置来排序

    引言 在生活休息时,有人喜欢打麻将.如果你也会打麻将,你一定会发现:在刚拿到牌的时候,牌的顺序一定是无序的,然后你就会按花色给牌进行排序.在进行排序时,如果你是习惯从小到大的顺序,你一定会将其中两张牌 ...

  • Python|理解折半插入排序

    引言 插入排序中有直接插入排序,善于思考的能够发现该算法在进插入的时候是采用了顺序查找的方法,而在要查找的表中数据本身有序的前提下可以使用折半查找来代替顺序查找,这种排序的算法就是折半插入排序算法. ...

  • Java基础(冒泡排序)

    一.冒泡排序简介(从小到大排序) 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 针对所有的 ...

  • 十种排序算法总结(冒泡、插入、选择、希尔、归并、堆、快速,计数,桶,基数)

    #include<iostream> using  namespace std; void swap1( int *left,  int *right) {      int temp = ...

  • 七大排序算法总结

    以下所有动图均来源于一像素博客园 以下代码均使用C 编写 完整代码请到这里下载 稳定排序算法:冒泡排序.插入排序.归并排序 时间复杂度不受数据影响:选择排序.归并排序.堆排序 时间复杂度基本小于n2: ...

  • 图解七大排序算法

    "排序是计算机的核心内容.事实上,从很多方面看,如果没有排序,计算机就不会变成现实." <算法之美:指导工作与生活的算法> 排序算法,或许是我们日常最常见也是使用频率最 ...

  • Java排序算法(四)希尔排序2

    希尔排序移步法:分组+直接插入排序组合 一.测试类SortTest import java.util.Arrays; public class SortTest { private static fi ...

  • 十大经典排序算法(动图演示)

    0.算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序. 非比较类排序: ...

  • 关于排序算法,看这一篇就够了!这篇看不懂麻烦找我拿红包

    排序算法是<数据结构与算法>中最基本的算法之一. 排序算法可以分为内部排序和外部排序. 内部排序是数据记录在内存中进行排序. 而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排 ...

  • 十大排序算法详解,基本思想+动画演示+C语言实现,太肝了!

    下面的99%的代码都是手动敲出来的,参考了诸多资料,已经经过测试,可以放心食用. 1.冒泡排序 基本思想 冒泡排序基本思想是依次比较两个相邻的元素,如果顺序(如从大到小.首字母从Z到A)错误就把他们交 ...

  • c语言必会排序算法集(含代码解析)

      一.冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小.首字母从A到Z)错误就 ...

  • 汽车之家推荐系统排序算法迭代之路

    文章作者:李晨旭 汽车之家 出品平台:DataFunTalk 导读:汽车之家的推荐系统紧随前沿技术,在支持内部多个推荐场景的同时,对外也有了一定的输出.未来我们期望汽车之家的推荐系统不只是前沿技术的应 ...