冒泡排序
冒泡排序
冒泡排序是相近的两个数字两两比较,然后按照从小到大或者从大到小的顺序排列
比如有两个数字A,B, A = 3 , B = 2,A 比 B 大,则A 和 B 位置发生交换,顺序变成了 B,A,详细过程看输出结果就很清晰了。
升序排序的代码如下:
- lst1 = [[1, 9, 8, 5, 6, 7, 4, 3, 2],
- [1, 2, 3, 4, 5, 6, 7, 8, 9]]
- lst = lst1[0]
- lenth = len(lst)
- #升序
- count_swap = 0
- for i in range(lenth):
- flag = False #标记
- for j in range(lenth - 1):
- if lst[j] > lst[j + 1]:
- lst[j], lst[j + 1] = lst[j + 1], lst[j]
- flag = True #如果发生交换,标记设为True
- count_swap += 1
- print(lst)
- if not flag: #not flag表示flag=False,即没有发生交换,表示全部列表已经排序完成,终止循环
- break
- print(lst) #输出排序结果
- print(count_swap)
输出结果:
- [1, 8, 9, 5, 6, 7, 4, 3, 2]
- [1, 8, 5, 9, 6, 7, 4, 3, 2]
- [1, 8, 5, 6, 9, 7, 4, 3, 2]
- [1, 8, 5, 6, 7, 9, 4, 3, 2]
- [1, 8, 5, 6, 7, 4, 9, 3, 2]
- [1, 8, 5, 6, 7, 4, 3, 9, 2]
- [1, 8, 5, 6, 7, 4, 3, 2, 9]
- [1, 5, 8, 6, 7, 4, 3, 2, 9]
- [1, 5, 6, 8, 7, 4, 3, 2, 9]
- [1, 5, 6, 7, 8, 4, 3, 2, 9]
- [1, 5, 6, 7, 4, 8, 3, 2, 9]
- [1, 5, 6, 7, 4, 3, 8, 2, 9]
- [1, 5, 6, 7, 4, 3, 2, 8, 9]
- [1, 5, 6, 4, 7, 3, 2, 8, 9]
- [1, 5, 6, 4, 3, 7, 2, 8, 9]
- [1, 5, 6, 4, 3, 2, 7, 8, 9]
- [1, 5, 4, 6, 3, 2, 7, 8, 9]
- [1, 5, 4, 3, 6, 2, 7, 8, 9]
- [1, 5, 4, 3, 2, 6, 7, 8, 9]
- [1, 4, 5, 3, 2, 6, 7, 8, 9]
- [1, 4, 3, 5, 2, 6, 7, 8, 9]
- [1, 4, 3, 2, 5, 6, 7, 8, 9]
- [1, 3, 4, 2, 5, 6, 7, 8, 9]
- [1, 3, 2, 4, 5, 6, 7, 8, 9]
- [1, 2, 3, 4, 5, 6, 7, 8, 9]
- [1, 2, 3, 4, 5, 6, 7, 8, 9]
- 25
降序排序的代码如下:
- lst1 = [[1, 9, 8, 5, 6, 7, 4, 3, 2],
- [1, 2, 3, 4, 5, 6, 7, 8, 9]]
- lst = lst1[0]
- lenth = len(lst)
- #降序
- count_swap = 0 #交换次数
- for i in range(lenth):
- flag = False #标记
- for j in range(lenth - 1, 0, -1):
- if lst[j] > lst[j - 1]:
- lst[j], lst[j - 1] = lst[j - 1], lst[j]
- flag = True #如果发生交换,标记设为True
- count_swap += 1 #发生交换,次数+1
- print(lst)
- if not flag: #not flag表示flag=False,即没有发生交换,表示全部列表已经排序完成,终止循环
- break
- print(lst) #输出排序结果
- print(count_swap)
#输出结果:
- [1, 9, 8, 5, 7, 6, 4, 3, 2]
- [1, 9, 8, 7, 5, 6, 4, 3, 2]
- [9, 1, 8, 7, 5, 6, 4, 3, 2]
- [9, 1, 8, 7, 6, 5, 4, 3, 2]
- [9, 8, 1, 7, 6, 5, 4, 3, 2]
- [9, 8, 7, 1, 6, 5, 4, 3, 2]
- [9, 8, 7, 6, 1, 5, 4, 3, 2]
- [9, 8, 7, 6, 5, 1, 4, 3, 2]
- [9, 8, 7, 6, 5, 4, 1, 3, 2]
- [9, 8, 7, 6, 5, 4, 3, 1, 2]
- [9, 8, 7, 6, 5, 4, 3, 2, 1]
- [9, 8, 7, 6, 5, 4, 3, 2, 1]
- 11
冒泡排序
选择排序
二元选择排序
插入排序
二叉树
算法(一)冒泡排序与封装接构
来源: http://www.bubuko.com/infodetail-2343746.html