八、排序算法
引入:排序介绍
由于文字概念不好理解,这里附上2分钟的视频讲解帮助同学们理解,是我之前学数据结构与算法基础的课程,点击链接即可跳转到B站观看视频即可
- 【清华大学博士讲解Python数据结构与算法(完整版)全套100节【下架重传】】1.11 排序介绍_batch_哔哩哔哩_bilibili
(一)直接插入排序(Insert Sort)
1.基本思想
直接插入排序是一种简单的排序算法,基本操作是将待排序的元素按其关键字的大小逐个插入到一个已经排好的有序序列中,直到所有的元素插入完为止,得到一个新的有序序列。
由于文字概念不好理解,这里附上10分钟的动画演示+Python代码实例帮助同学们理解插入排序的思想,是我之前学数据结构与算法基础的课程,点击链接即可跳转到B站观看视频即可
2.动画演示
- 【清华大学博士讲解Python数据结构与算法(完整版)全套100节【下架重传】】1.15 插入排序_batch_哔哩哔哩_bilibili
3.举例
-
插入排序代码:
def insert_sort(s):
for i in range(1,len(s)):#i 表示待插入的元素的下标
district=s[i] #定义一个变量 表示待插入的元素的区域
j=i-1 #j 指的是已插入元素区的下标
while s[j]>district and j>=0:
s[j+1]=s[j]
j-=1
s[j+1]=district
s=[49,38,65,97,76,13,27] #定义列表以及列表元素
print("原列表:")
print(s)
insert_sort(s) #调用函数
print("排序后列表:")
print(s)
-
运行结果 :
- 运行过程
(二)冒泡排序(Bubble Sort)
1.基本思想
先将第一个元素的关键字和第二个元素的关键字进行比较,若为逆序(即r[1]. key>r[2].key ),则交换两个元素;然后比较第二个元素和第三个元素的关键字,若为逆序,又交换两个元素;如此下去,直至第n个元素和第n-1个元素的关键字比较完为止,这样就完成了第一趟冒泡排序,其结果是关键字最大的元素被安置到第n个元素的位置。接着进行第二趟冒泡排序,对前n-1个元素进行类似操作,其结果是关键字次大的元素被安置到第n-1个元素的位置。对含有n个元素的文件最多需要进行n-1趟冒泡排序。当比较过程中序列为有序(即没有记录进行交换)时,则退出整个排序。冒泡排序的最好情况是移动零次记录,最坏情况将移动n(n-1)/2次。
由于文字概念不好理解,这里附上4分钟的动画演示+6分钟的Python代码实例帮助同学们理解冒泡排序的思想,是我之前学数据结构与算法基础的课程,点击链接即可跳转到B站观看视频即可
2.动画演示
注意最好和最坏的情况
- 最坏:n(n-1)/2(完全无序)
- 最好:0(完全有序)
3.举例
某线性表有8个元素,L={49,38,65,97,76,13,27,49}。利用冒泡排序算法,完成排序的执行过程
-
冒泡排序代码:
def bubble_sort(s): #定义一个冒泡排序的函数
for i in range(len(s)-1):
for j in range(len(s)-i-1):
if s[j]>s[j+1]:
s[j],s[j+1]=s[j+1],s[j]
s=[49,38,65,97,76,13,27] #定义列表以及列表元素
print("原列表:")
print(s)
bubble_sort(s) #调用函数
print("排序后列表:")
print(s)
-
运行结果:
- 如果有学习Java的同学可以点击链接看一下我之前上传的冒泡排序(Java版的)
- Java数组的应用---冒泡排序(Bubble Sort)-CSDN博客
如果这篇文章对你有帮助,不要忘记你的点赞跟关注噢,你的支持是我持续写作的动力,小编会带来更加丰富的内容,敬请期待!!!
书本:中公高中信息技术与学科知识与及教学能力
图片:网络
视频演示:哔哩哔哩