第一部分:趣味算法入門;第八題:冒泡排序(並與選擇排序對比)

100個不一樣類型的python語言趣味編程題

在求解的過程當中培養編程興趣,拓展編程思惟,提升編程能力。python

第一部分:趣味算法入門;第八題:算法

8.冒泡排序:對N個整數(數據由鍵盤輸入)進行升序排序編程

冒泡排序的思想:首先從表頭開始日後掃描數組,在掃描的過程當中逐對比較相鄰的倆個元素的大小。若相鄰的兩個元素中,前面的元素大於後面的元素,則將它們互換,稱之爲消去了一個逆序,在掃描的過程當中不斷的將兩相鄰元素中的大者日後移動,最後就將數組中的最大者換到了表的最後,而後在剩下的數組元素中(n-1)個元素重複上面的過程,將次小元素放到倒數第二個位置。不斷重複以上過程,直到剩下的數組元素爲0爲止,此時數組就變成了有序。數組

經常使用的排序方法有:冒泡排序、選擇排序、插入排序、快速排序和堆排序等。app

我定義了冒泡排序和選擇排序的函數,以比較二者排序方法的不一樣之處,其餘排序方法還請自測。函數

#解題方法示例以下;
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))    #調用選擇排序函數


#解本問題有多種方法,此方法並非標準答案,讀者能夠本身嘗試各類方法

選擇排序思想:掃描整個線性表,第一輪比較拿數組中的第一個元素與其餘元素進行比較,遇到比第一個小的則進行交換,再拿者交換以後的第一個元素接着上次比較的位置與後面的元素進行比較,直到掃描到線性表的最後,從中選出最小的元素,將它變換的表的最前面,第二輪比較是的時候從第二個元素開始,依次與第三個、第四個直到最後一個比較,在比較的過程當中有比第二個元素小的進行交換,接着與後面的元素比較,剩下的字表採用一樣的方法,直到字表爲空。code

明日一題:實例009:暫停一秒輸出。orm

解決問題的方法會在36h內發出。

若是你喜歡個人文章,請滑到下方點個推薦再走. ,以給我動力哦;轉載請註名出處。而後..請多來作客鴨。排序

注:100個不一樣類型的python語言趣味編程題是參考100個不一樣類型的c語言趣味編程題而寫,陸續會更新。歡迎你們分享出大家的方案。ci

相關文章
相關標籤/搜索