美文网首页想法简友广场
常见排序算法(1)一一插入排序

常见排序算法(1)一一插入排序

作者: 吃菜长肉 | 来源:发表于2019-12-03 17:24 被阅读0次

插入排序有2种,分别是直接插入排序和希尔排序。

1.直接插入排序:从还没排序的数组里取出一个数,插入到已排序的数组里。

这里有一个未排序的数组:

image

那么具体的排序升序过程(从待排序数组里取出索引下标从1开始,因为初始时排好序的数组没有数字,那么下标是0的数字就直接放入排好序的数组里):

第1趟:从未排序的数组取出第一个的数字4,4比1大,直接插入排好序的数组里;

第2趟:再从未排序的数组取出第一个的数字3,在已排好序的数组里从后往前找,找到一个比3小的数(数字1),并插入到数字1的后面;

...

如此重复插入的过程直到排好序。

image

具体实现代码如下:

image

时间复杂度:O(n^2);

空间复杂度:只用到一个临时空间,所以空间复杂度O(1);

2.希尔排序:希尔排序根据增量d(看情况设置)将待排序的数组分组,每组进行直接插入排序,每次分组排序后,d=d/2,重复分组排序数组,直到d=0结束排序。具体排序:
d=3

第1组数据:1 6 7 排序后:1 6 7

第2组数据:4 5 排序后:4 5

第3组数据:3 2 排序后:2 3

d=1

第1组数据:1 2 3 4 5 6 7 排序后:1 2 3 4 5 6 7

d=0,结束排序。

image

具体代码实现:

image

时间复杂度:不确定,取决于增量d的值;

空间复杂度:只用到一个临时空间,所以空间复杂度O(1);

其实希尔排序是直接插入排序的升级版,所以整体来看,只要思路清晰,其实插入排序并不难。

相关文章

  • LeetCode大全

    1.常见排序算法: 常见的排序算法:冒泡排序、选择排序、插入排序、归并排序、快速排序、希尔排序、堆排序、计数排序、...

  • 排序一:冒泡、插入、选择

    文章结构 概述 冒泡排序 插入排序 选择排序 1. 概述 常见的排序算法有:冒泡排序、插入排序、选择排序、归并排序...

  • 常用排序算法实现

    1、常见排序算法大致有以下几种:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序2、各种排序算法...

  • 插入排序算法实现

    排序算法是最常见,最基础的算法,作者文集中记录了两种排序算法(插入排序,归并排序) 插入排序算法实现很简单直接,附...

  • 数据结构与算法(七),排序

    这节总结一下常见的排序算法。 目录: 1、插入排序 1.1、直接插入排序 1.2、二分插入排序 2、选择排序 3、...

  • 排序算法

    常见的排序算法 常见的排序算法有:插入、希尔、选择、冒泡、归并、快速、堆排序。。。 插入排序 算法步骤一、从数组的...

  • Python知识点:常见算法的python实现

    提到排序算法,常见的有如下几种:冒泡排序、选择排序、插入排序、快速排序、堆排序、归并排序、希尔排序;查找算法最常见...

  • 数据结构与算法(二)

    排序算法 1.内部排序:数据记录在内存中进行排序 常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归...

  • JS实现排序算法

    原文:常见排序算法之JavaScript实现 - 知乎 目录 冒泡排序 选择排序 插入排序 合并排序 快速排序 1...

  • 常见排序算法(1)一一插入排序

    插入排序有2种,分别是直接插入排序和希尔排序。 1.直接插入排序:从还没排序的数组里取出一个数,插入到已排序的数组...

网友评论

    本文标题:常见排序算法(1)一一插入排序

    本文链接:https://www.haomeiwen.com/subject/dlqhgctx.html