冒泡算法python动态演示
冒泡算法
文章目录
- 冒泡算法python动态演示
-
- 冒泡算法
- 冒泡算法python实现
- 算法动态演示
- 演示图片保存
冒泡算法(后冒法):
1、每次只确定一个元素;2、且只有相邻的元素进行交换;
3、两个相邻元素比较,如果该元素比它后面相邻的元素小,则交换两元素位置,一轮结束,确定一个元素位置已排好序列的最前面;
4、下轮从未排好序的元素开始下一轮排序,直到所有元素都排好。
优化:
1、如果不再发生交换时则停止循环;2、在每轮结束后记录最后一次交换的下标以便于减少遍历次数;
3、每次进行冒泡算法时最好将原列表进行复制,在复制列表进行操作防止改变原表。
冒泡算法python实现
def bubble_sotr(our_list):
our_sorted_list = our_list[:] # 防止改变原列表
last_index = len(our_sorted_list) - 1#改进可以每次记录最后交换的位置,不再交换的元素不需要进行排序
for i in range(len(our_sorted_list)):
flag = True
for j in range(last_index):
if our_sorted_list[j] > our_sorted_list[j + 1]:
flag = False
our_sorted_list[j], our_sorted_list[j + 1] = our_sorted_list[j + 1], our_sorted_list[j]
last_index = j
if flag:
break
return our_sorted_list
#测试
our_list = [57, 98, 4, 3, 1, 5, 23, 4, 5, 6, 78, 79]
our_sorted_list = bubble_sotr(our_list)
print(our_list)#[57, 98, 4, 3, 1, 5, 23, 4, 5, 6, 78, 79]
print(our_sorted_list)#[1, 3, 4, 4, 5, 5, 6, 23, 57, 78, 79, 98]
算法动态演示
import matplotlib.pyplot as plt
def draw_bubble_sort(our_list