Python编程:排序算法之冒泡排序
【摘要】 列表排序
将无序列表变为有序列表输入:无序列表输出:有序列表
常见的排序算法
名称时间复杂度空间复杂度冒泡排序O(n^2)O(1)选择排序O(n^2)O(1)插入排序O(n^2)O(1)快速排序mid堆排序high归并排序high基数排序少见希尔排序少见桶排序少见
排序算法关键点:
有序区无序区
冒泡排序
列表每两个相邻的数,如果前边的比后边的大,那么交换...
列表排序
- 将无序列表变为有序列表
- 输入:无序列表
- 输出:有序列表
常见的排序算法
名称 | 时间复杂度 | 空间复杂度 |
---|---|---|
冒泡排序 | O(n^2) | O(1) |
选择排序 | O(n^2) | O(1) |
插入排序 | O(n^2) | O(1) |
快速排序 | mid | |
堆排序 | high | |
归并排序 | high | |
基数排序 | 少见 | |
希尔排序 | 少见 | |
桶排序 | 少见 |
排序算法关键点:
- 有序区
- 无序区
冒泡排序
- 列表每两个相邻的数,如果前边的比后边的大,那么交换这两个数
代码实现
import random
# 冒泡排序,从小到大排序O(n^2)
def bubble_sort(lst): count = 0 n = len(lst) - 1 # 9 总遍历次数,比序列总数少1 for i in range(n): # 0-8 for j in range(n-i): # 8-0 if lst[j]>lst[j+1]: # 前者比后者大则交换 lst[j], lst[j+1] = lst[j+1], lst[j] count += 1 print("count: %s", count)
# 冒泡排序改进,从小到大排序
def bubble_sort_1(lst): count = 0 n = len(lst) - 1 # 9 总遍历次数,比序列总数少1 for i in range(n): # 0-8 exchange = False for j in range(n-i): # 8-0 if lst[j]>lst[j+1]: # 前者比后者大则交换 lst[j], lst[j+1] = lst[j+1], lst[j] exchange = True count += 1 if exchange==False: # 如果遍历结束没有任何交换,说明已经有序 break print("count: %s", count)
lst = list(range(10))
# random.shuffle(lst) #打乱顺序
bubble_sort(lst)
# count: %s 45
bubble_sort_1(lst)
# count: %s 9
print(lst)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。
原文链接:pengshiyu.blog.csdn.net/article/details/80616627
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)