# This is ch08-2.py by 0000000XXX (學號) YYYYYY(姓名) on 2020/06/19
# 此為 展示 Bubble sort (氣泡排序法) 的操作
# 程式的前兩行務必註明:學號、姓名、題號、及用途
import random
print("===============程式描述========================")
print("= 程式名稱:ch8-2.py =")
print("= 程式目的:Bubble sort =")
print("==============================================")
A=[]
num = input('請輸入排序資料的個數:')
m = int(num)
def RandomNum(): #自動產生 n 個亂數值
for i in range(1,m+1,1):
A.append(random.randint(1,3*m))
for i in range(0,len(A)):
print(A[i],end=" ")
print()
def BubSort(A): #氣泡排序之副程式
n=len(A)
for i in range(n-1): # 有 n 個資料,但只要執行 n-1 次
# 從第 1 個開始比較,直到最後一個還沒到最終位置的數字
for j in range(n-i-1):
# print ("=== 第 %d 次比較交換:" %j)
if (A[j] > A[j+1]):
# 兩資料交換位置
Temp = A[j]
A[j] = A[j+1]
A[j+1] = Temp
print ("=== 第 %d 輪比較交換結果:" %i)
PrintBubSort(A) # 印出陣列 之副程式
def PrintBubSort(A): # 印出陣列 之副程式
for i in range(0,len(A)):
print(A[i],end=" ")
print()
print("=======輸入(自動產生 n 個亂數值)========")
print("原陣列的值")
RandomNum() #呼叫產生10個亂數值的副程式
BubSort(A) #呼叫選擇排序法的副程式
print("=========輸出(排序後結果)==============")
PrintBubSort(A)
#呼叫排序後的結果之副程式
'''
作業8:
# EX8-1. 仿照本範例,寫出一 選擇排序法 的程式,說明其概念、方法,並列出其交換與比較的過程和次數。
# EX8-2. 仿照本範例,寫出一 插入排序法 的程式,說明其概念、方法,並列出其交換與比較的過程和次數。
# EX8-3. 仿照本範例,寫出一 快速排序法 的程式,說明其概念、方法,並列出其交換與比較的過程和次數。
# EX8-4. 仿照本範例,寫出一 Shell 排序法 的程式,說明其概念、方法,並列出其交換與比較的過程和次數。
# EX8-5. 仿照本範例,寫出一 合併排序法 的程式,說明其概念、方法,並列出其交換與比較的過程和次數。
# EX8-6. 仿照本範例,寫出一 Radix 排序法 的程式,說明其概念、方法,並列出其交換與比較的過程和次數。
# EX9-7. 仿照本範例,寫出一 二分搜尋法 的程式,說明其概念、方法,並列出搜尋的過程和次數。
'''