100個不同類型的python語言趣味編程題 在求解的過程中培養編程興趣,拓展編程思維,提高編程能力。 第一部分:趣味演算法入門;第八題: 8.冒泡排序:對N個整數(數據由鍵盤輸入)進行升序排序 冒泡排序的思想:首先從表頭開始往後掃描數組,在掃描的過程中逐對比較相鄰的倆個元素的大小。若相鄰的兩個元素中 ...
100個不同類型的python語言趣味編程題
在求解的過程中培養編程興趣,拓展編程思維,提高編程能力。
第一部分:趣味演算法入門;第八題:
8.冒泡排序:對N個整數(數據由鍵盤輸入)進行升序排序
冒泡排序的思想:首先從表頭開始往後掃描數組,在掃描的過程中逐對比較相鄰的倆個元素的大小。若相鄰的兩個元素中,前面的元素大於後面的元素,則將它們互換,稱之為消去了一個逆序,在掃描的過程中不斷的將兩相鄰元素中的大者往後移動,最後就將數組中的最大者換到了表的最後,然後在剩下的數組元素中(n-1)個元素重覆上面的過程,將次小元素放到倒數第二個位置。不斷重覆以上過程,直到剩下的數組元素為0為止,此時數組就變成了有序。
常用的排序方法有:冒泡排序、選擇排序、插入排序、快速排序和堆排序等。
我定義了冒泡排序和選擇排序的函數,以比較兩者排序方法的不同之處,其他排序方法還請自測。
#解題方法示例如下;
def Maopao(list): #冒泡排序函數
for i in range(1,len(list)):
for j in range(len(list)-i):
if list[j] > list[j+1]:
list[j],list[j+1] = list[j+1],list[j]
return list
def Xuanze(list): #選擇排序函數
for i in range(len(list)):
for j in range(i+1,len(list)):
if list[i] > list[j]:
list[j],list[i] = list[i],list[j]
return list
n = 1
numbers = [] #獲得用戶輸入的數字
while True:
a = input('請依次輸入要比較的第{}數,輸入q取消輸入(不分大小寫):'.format(n))
if a.lower() == 'q':
break
elif a.isdecimal():
numbers.append(int(a))
n += 1
else:
print('請輸入數字或者‘q’') #進行簡單的排錯
print(Maopao(numbers)) #調用冒泡排序函數
print(Xuanze(numbers)) #調用選擇排序函數
#解本問題有多種方法,此方法並不是標準答案,讀者可以自己嘗試各種方法
選擇排序思想:掃描整個線性表,第一輪比較拿數組中的第一個元素與其他元素進行比較,遇到比第一個小的則進行交換,再拿者交換之後的第一個元素接著上次比較的位置與後面的元素進行比較,直到掃描到線性表的最後,從中選出最小的元素,將它變換的表的最前面,第二輪比較是的時候從第二個元素開始,依次與第三個、第四個直到最後一個比較,在比較的過程中有比第二個元素小的進行交換,接著與後面的元素比較,剩下的字表採用同樣的方法,直到字表為空。
明日一題:實例009:暫停一秒輸出。
解決問題的方法會在36h內發出。
如果你喜歡我的文章,請滑到下方點個推薦再走. ,以給我動力哦;轉載請註名出處。然後..請多來做客鴨。
註:100個不同類型的python語言趣味編程題是參考100個不同類型的c語言趣味編程題而寫,陸續會更新。歡迎大家分享出你們的方案。