【数据结构与算法】排序算法的稳定性与冒泡排序的实现

举报
大数据小禅 发表于 2021/12/19 22:47:02 2021/12/19
【摘要】 持续更新,采用python进行演示,排序算法篇,包含冒泡排序,选择排序,插入排序,希尔排序,归并排序,快速排序。 数据与算法1:数据结构:数据结构是一种特定的计算机储存,组织数据的方式。宗旨是使计算机能够高效的使用数据。越强大的计算机 ------>越复杂的数据结构2:抽象的数据类型(ADT):数列,列表树,表格…对于某一类型的户数或者是某一个数据集的描述以及对该数据的各种操作。ADTs拥有...

持续更新,采用python进行演示,排序算法篇,包含冒泡排序,选择排序,插入排序,希尔排序,归并排序,快速排序。

数据与算法

1:数据结构:数据结构是一种特定的计算机储存,组织数据的方式。宗旨是使计算机能够高效的使用数据。

越强大的计算机 ------>越复杂的数据结构

2:抽象的数据类型(ADT):数列,列表树,表格…

对于某一类型的户数或者是某一个数据集的描述以及对该数据的各种操作。

ADTs拥有干净的接口,其具体的实施细节是封装起来的

算法

算法:算法是能够在有限时间内解决一系列问题的清晰指令

效率 1:时间 2:空间

目标

1:能够识别程序要求的功能以解决当前的任务

2:设计能够高效解决此任务的数据结构与算法

3:评价该方案的效率和正确性

思路 分析时间复杂度空间复杂度

排序算法

排序算法:是一种能将一串数据依照特定顺序进行排列的一种算法。

在这里插入图片描述

常见算法的效率比较:

在这里插入图片描述

排序中最简单的排序:冒泡排序

在这里插入图片描述
在这里插入图片描述

冒泡排序思想分析:
冒牌排序作为排序算法中最简单的一种。冒泡顾名思义当一个气泡从水中缓慢冒出的时候会慢慢变大,冒泡排序根据的就是这个思想。一个数组,通过循环的控制,将第一个数字与第二个数字进行比较,如果第一个数字比第二个数字大,那么久交换位置,直到将数组的全部数字比较完。这个时候数组的最后一个数字就是这个数组对打的数字。根据这个思想,最后的数字动,上下的数字依次进行比较,从而达到排序效果

冒泡排序代码实现
def bubble_sort(alist):    #第二个for循环就是从头走到尾进行交换,第一个for循环就是让第一个循环第一次交			   换之后从n-1变成n-2
    '''冒泡排序'''
    n=len(alist)
    for j in range(0,n-1):                                     #for i in range(5)输出0,1,2,3,4
        for i in range(0,n-1-j):                              
           
            if alist[i]>alist[i+1]:
                alist[i],alist[i+1]=alist[i+1],alist[i]
                
# j=1 (0,n-1)   j=2 (0,n-1-1)    j=3 (0,n-1-1-1)                

if __name__=="__main__":
      li=[34,23,45,97,78,234,29]
      print(li)
      bubble_sort(li)
      print(li)                             
      
输出:
[34, 23, 45, 97, 78, 234, 29]
[23, 29, 34, 45, 78, 97, 234]

就是每一次循环都把最大的数放在后面,前面的比后面大,就换位置,不然就继续循环。

冒泡排序时间复杂度分析

在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。