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語言趣味編程題而寫,陸續會更新,歡迎大家分享出你們的方案,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/167826.html
標籤:Python
