利用Python進行冒泡排序

來源:互聯網
上載者:User

標籤:ext   解析   現在   數組   結束   原理   列表   賦值   中間   

# -*- coding:utf-8 -*-## 冒泡排序解析"""冒泡排序的必備知識:互換位置 用temp臨時變數a1 = 456a2 = 123temp = a1a1 = a2a2 = tempprint(a1)print(a2)Python中可以不使用中間變數temp。直接可以進行互換位置。a1 = 456a2 = 123if a1 > a2:  # 如果a1 比 a2 大,那麼 交換位置    (a1, a2) = (a2, a1) # 運用到多變數賦值,用元組分隔。print(a1, a2)# 冒泡排序原理1       1       1       3310     10       33      1    》       》       》2      33       10      1033      2       2       2上面是4個數。通過依次的從下面兩個數開始比較,再與上面比較,得出最大的值,將最大的值放在最上面的位置,這就是冒泡。33和2 先排序。利用的就是上面的那個基礎知識。那麼2在下面,33在上面。然後33和10再進行比較。最大的放上面,最小的放下面。。。。。最後找到了33是最大值。該值為最大。放到了最上面。通過一系列的比較。33是最大的放在上面了。然後再次操作步驟和上面一樣,再進行最下面兩個比較,依次比較。將最大的第二個數放到最上面。33      331       10    》10      12       2這次將最大的第二位元10找到了。繼續比較。。。33      3310      10    》1       22       1這就是最終的結果,這就是應用的冒泡排序原理進行排序。-------------li = [33, 2, 10, 1]使用冒泡排序,將列表從小到大排序;下面用代碼實現:"""li = [33, 2, 10, 1]  # 這是一個列表。長度為len(li)print(li)for i in range(len(li) - 1):    #                           i = 0    1    2     3    # current_value: li[i]          33   2    10    1    # next_value:    li[i + 1]      2    10   1     無值了,導致數組越界。因此range(len(li) - 1)    # print(i, li[i], li[i+1])    if li[i] > li[i + 1]:        temp = li[i]        li[i] = li[i + 1]        li[i + 1] = tempprint(li)  # 這次將最大的值33 取出了 放到了最後。# 33最大的取出來了,li = [2, 10, 1, 33] ;現在還有再進行排序。將前三個值進行分別冒泡排序。那麼就是 for i in range(len(li) - 2)for i in range(len(li) - 2):    if li[i] > li[i + 1]:        temp = li[i]        li[i] = li[i + 1]        li[i + 1] = tempprint(li)  # 這次將第二大的的值33 取出了倒數第二位。# 10第二大的取出來了, li = [2, 1, 10, 33], ;現在還有再進行排序。將前兩個值進行分別冒泡排序。那麼就是 for i in range(len(li) - 3)for i in range(len(li) - 2):    if li[i] > li[i + 1]:        temp = li[i]        li[i] = li[i + 1]        li[i + 1] = tempprint(li)# 這裡就結束了,因為只有最後兩個數 1 和 2 進行比較了。# 總結上面的代碼過程。唯一的區別在於for i in range(len(li) - 【1、2、3】) 這裡的不同。那麼就可以再在外面做個迴圈。# li 的長度為len(li);上面len(li)個數排序進行了 -1 -2 -3 三次的過程。那麼外層迴圈可以用 for j in range(1, len(li)) 即可。
冒泡排序最終運算式

li = [22, 31, 82, 35, 333, 2, 62, 78, 24, 6, 23, 4, 8, 88, 5, 42, 21, 233, 1232, 165, 121, 2480, 82, 12, ]

for j in range(1, len(li)):    for i in range(len(li) - j):        if li[i] > li[i + 1]:            temp = li[i]            li[i] = li[i + 1]            li[i + 1] = tempprint(li)

或者

for j in range(1, len(li)):    for i in range(len(li) - j):        if li[i] > li[i + 1]:            (li[i], li[i + 1]) = (li[i + 1], li[i])  # Python可以不使用中間變數temp,直接可以互換位置。print(li)

利用Python進行冒泡排序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.