【数据结构与算法】排序算法的稳定性与冒泡排序的实现
2023-09-27 14:21:04 时间
持续更新,采用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]
就是每一次循环都把最大的数放在后面,前面的比后面大,就换位置,不然就继续循环。
冒泡排序时间复杂度分析
相关文章
- 数据结构与算法之桶排序
- 八大排序算法
- 严选算法模型质量保障
- 数据结构精要------冒泡与直接排序算法
- Java数据结构与算法之排序
- 【算法】【排序模块】选择排序和归并排序
- 排序算法系列:插入排序算法
- 【转】算法总结-这是一份全面并且详细的排序算法学习指南
- 基于凸优化的动态频谱分配算法matlab仿真,凸优化采用CVX工具箱,介绍CVX工具箱的使用方法。
- 【免疫算法,资源分配】基于免疫算法的认知无线电资源分配研究
- C#,双向链表(Doubly Linked List)快速排序(Quick Sort)算法与源代码
- 排序算法系列之(七)——分分合合的归并排序
- 算法与计算--算法的本质是表达解决问题的逻辑
- 复习几种排序算法
- 看动画学算法之:排序-冒泡排序
- 算法:comparable比较器的排序原理实现(二叉树中序排序)
- 华为OD机试 - 任务调度(Python) | 机试题+算法思路+考点+代码解析 【2023】
- 华为OD机试 -找出符合要求的字符串子串(Java) | 机试题+算法思路+考点+代码解析 【2023】
- 数据结构与算法分析-排序
- 桶排序算法
- 白话经典算法系列之六 高速排序 高速搞定
- Java数据结构与算法 day05 排序算法
- 排序算法--简单选择排序
- 前端排序算法 - 插入排序算法 (5)
- 前端排序算法 - 选择排序算法 (4)
- 42数据结构与算法分析之---交换排序
- 排序算法——希尔排序
- 排序算法——冒泡排序