活动地址:优快云21天学习挑战赛
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
想系统/深入学习某技术知识点…
一个人摸索学习很难坚持,想组团高效学习…
想写博客但无从下手,急需写作干货注入能量…
热爱写作,愿意让自己成为更好的人…
…
欢迎参与优快云学习挑战赛,成为更好的自己,请参考活动中各位优质专栏博主的免费高质量专栏资源(这部分优质资源是活动限时免费开放喔~),按照自身的学习领域和学习进度学习并记录自己的学习过程。您可以从以下3个方面任选其一着手(不强制),或者按照自己的理解发布专栏学习作品,参考如下:
**
创作计划
**
1,机缘
早年就加了群主大大的好友和交流群,那个时候是在刚读大学本科的时候,现在马上也该研二了~~~
2,收获
A,巩固大佬专栏中的基本算法
B,能够让自己写的内容帮助到一部分人
C,认识志同道合的领域同行
…
3,日常
提示:当前创作和你的工作、学习是什么样的关系 例如:
- 偶尔会写博客记录自己学习的内容
- 大部分时间没养成写博客的习惯,希望今后遇到问题解决问题都做记录分享给大家
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)
本文介绍了直接插入排序的基本概念和工作原理,并通过实例展示了排序过程。此外,还提供了Python代码实现,详细解释了每一步的操作。通过参与优快云学习挑战赛,作者旨在巩固算法知识,分享学习成果,同时期望能帮助到其他学习者。

被折叠的 条评论
为什么被折叠?



