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

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

数据与算法

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

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

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

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

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

算法

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

效率 1:时间 2:空间

目标

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

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

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

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

排序算法

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

【数据结构与算法】排序算法的稳定性与冒泡排序的实现_第1张图片

常见算法的效率比较:

【数据结构与算法】排序算法的稳定性与冒泡排序的实现_第2张图片

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

【数据结构与算法】排序算法的稳定性与冒泡排序的实现_第3张图片
【数据结构与算法】排序算法的稳定性与冒泡排序的实现_第4张图片

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

冒泡排序代码实现
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]

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

冒泡排序时间复杂度分析

【数据结构与算法】排序算法的稳定性与冒泡排序的实现_第5张图片

你可能感兴趣的:(数据结构与算法)