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)