import random """ 排序:将一组无序记录序列调整为有序记录序列 列表排序:将无序列表调整为有序列表 输入:列表 输出:有序列表 升序与降序 内置函数sort() """ #冒泡排序 bubble Sort #1、列表每两个相邻的两个数,若前面比后面的大,则交换这个数 #2、一趟排序完成后,则无序列表减少一个数,有序区增加一个数 ps 循环一次会筛选出最大值放置有序区,剩余无序区再循环 def bubble_Sort(li): for i in range(len(li) - 1):# 第一次循环筛选出最大值 for j in range(len(li) -i -1): if li[j] > li[j+1]:#--升序 #if li[j] < li[j+1] -----降序 li[j],li[j+1] = li[j+1],li[j] print (li) #生成100个0-1000的随机数的列表, #li = [random.randint(0,100) for i in range(10)] """li = [2,5,4,6,3,1,8,9,7] print(li) print("分割线--------------------") bubble_Sort(li) print(li)""" """ [2, 5, 4, 6, 3, 1, 8, 9, 7] ----------原列表 分割线-------------------- [2, 4, 5, 3, 1, 6, 8, 7, 9] [2, 4, 3, 1, 5, 6, 7, 8, 9] [2, 3, 1, 4, 5, 6, 7, 8, 9] [2, 1, 3, 4, 5, 6, 7, 8, 9] [1, 2, 3, 4, 5, 6, 7, 8, 9] [1, 2, 3, 4, 5, 6, 7, 8, 9] [1, 2, 3, 4, 5, 6, 7, 8, 9] [1, 2, 3, 4, 5, 6, 7, 8, 9] [1, 2, 3, 4, 5, 6, 7, 8, 9] """ #冒泡优化,当一次循环没有发生任何交换,那么就认为列表已经被排好序了,就结束 def bubble_Sort2(li): for i in range(len(li) - 1):# 第一次循环筛选出最大值 exchange = False for j in range(len(li) -i -1): if li[j] > li[j+1]:#--升序 #if li[j] < li[j+1] -----降序 li[j],li[j+1] = li[j+1],li[j] exchange = True print (li) if not exchange: return li2 = [2,5,4,6,3,1,8,9,7] print(li2) print("分割线--------------------") bubble_Sort2(li2) print(li2)