数据结构与算法[零基础]---8.查找算法上(附代码演示)

八、排序算法

        引入:排序介绍


        由于文字概念不好理解,这里附上2分钟的视频讲解帮助同学们理解,是我之前学数据结构与算法基础的课程,点击链接即可跳转到B站观看视频即可

(一)直接插入排序(Insert Sort)

1.基本思想

        直接插入排序是一种简单的排序算法,基本操作是将待排序的元素按其关键字的大小逐个插入到一个已经排好的有序序列中,直到所有的元素插入完为止,得到一个新的有序序列。


        由于文字概念不好理解,这里附上10分钟的动画演示+Python代码实例帮助同学们理解插入排序的思想,是我之前学数据结构与算法基础的课程,点击链接即可跳转到B站观看视频即可

2.动画演示

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)

        如果这篇文章对你有帮助,不要忘记你的点赞跟关注噢,你的支持是我持续写作的动力,小编会带来更加丰富的内容,敬请期待!!!

  书本:中公高中信息技术与学科知识与及教学能力       

   图片:网络

   视频演示:哔哩哔哩

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值