基本算法——直接插入排序

本文介绍了直接插入排序的基本概念和工作原理,并通过实例展示了排序过程。此外,还提供了Python代码实现,详细解释了每一步的操作。通过参与优快云学习挑战赛,作者旨在巩固算法知识,分享学习成果,同时期望能帮助到其他学习者。
部署运行你感兴趣的模型镜像


活动地址:优快云21天学习挑战赛

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
想系统/深入学习某技术知识点…
一个人摸索学习很难坚持,想组团高效学习…
想写博客但无从下手,急需写作干货注入能量…
热爱写作,愿意让自己成为更好的人…


欢迎参与优快云学习挑战赛,成为更好的自己,请参考活动中各位优质专栏博主的免费高质量专栏资源(这部分优质资源是活动限时免费开放喔~),按照自身的学习领域和学习进度学习并记录自己的学习过程。您可以从以下3个方面任选其一着手(不强制),或者按照自己的理解发布专栏学习作品,参考如下:

**

创作计划

**
1,机缘

早年就加了群主大大的好友和交流群,那个时候是在刚读大学本科的时候,现在马上也该研二了~~~

2,收获

A,巩固大佬专栏中的基本算法
B,能够让自己写的内容帮助到一部分人
C,认识志同道合的领域同行

3,日常

提示:当前创作和你的工作、学习是什么样的关系 例如:

  1. 偶尔会写博客记录自己学习的内容
  2. 大部分时间没养成写博客的习惯,希望今后遇到问题解决问题都做记录分享给大家

4,憧憬

提示:不想去互联网公司卷,惜命哈哈哈,希望找个稳定一点的工作,过幸福安稳的生活就好~~

学习计划

1,学习目标

每篇博客使用自己习惯的编程语言实现至少一个算法

2,今日学习内容

A,了解直接插入排序的概念
B,使用编程实现该算法

3,学习时间

周一至周五晚上 7 点—晚上9点

4,学习产出

优快云技术博客 1 篇

学习日记

1.顺序查找的概念:

英文名:Straight Insertion Sort
也是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表

假设待排序的记录存放在数组R[0 … n-1]中,排序过程的某一中间时刻,R被划分成两个子区间R[0 … i-1]和R[i … n-1],其中已排好序的有序区,当前未排序的部分称其为无序区。

在这里插入图片描述

直接插入排序的基本操作是将当前无序区的第1个记录R[i]插入到有序区R[0 … i-1]中适当的位置上,使R[0 … i]变为新的有序区。直接插入排序每次使有序区增加1个记录,又称为增量法。

2.举例说明

step1:

现在有一组待排序的初始关键字序列为{49 , 38 , 15 , 17 , 16 , 13 , 27 , 49},直接插入排序过程如下:
在这里插入图片描述
我们上来的时候默认第一个元素是有序的,在比较的时候从数组第二个元素进行比较,这个时候从第二个元素到最后一个元素都是无序的。

step2:

第二个元素38与前面的第一个元素49比较,发现38<49,于是要进行元素的互换,得到以下的结果,这个时候有序区域增加为前两个元素。
在这里插入图片描述

step3:

第三个元素15<38,所以两个元素进行互换,换完之后,38来到15的位置,此时这个位置被38代替,38再与49比较大小,38<49,两个元素再次交换位置,过程如下图:
在这里插入图片描述

下面的过程就以此类推,不再一一画出来了,大家只要知道原理就可以了,下面是直接插入排序的代码实现了:

3.代码实现:

def direct_insert(l):
    for ele in range(1, len(l)):
        i = 0
        while i < ele:
            if l[ele] >= l[i]:
                i += 1
            else:
                tmp = l[ele]
                l[ele] = l[i]
                l[i] = tmp
    print(l)


l = [49, 38, 15, 17, 16, 13, 27, 49]
direct_insert(l)

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值