#!/usr/bin/python
#coding=utf-8
def bubble_sort(li): #迴圈列表每次拿出乙個值,和列表中所有的值進行比較之後然後切換位置
for i in range(len(li)-1): #躺數迴圈 最後乙個數不用比較 已經是最大或者最小的數 所以躺數減少1
exchange = false #增加標識 以減少迴圈次數
for j in range(len(li)-i-1): # len(li)-i 表示列表中剩下的無序的列表。每比較一次 則剩下的列表長度減少i。無序列表躺數
if li[j] > li[j+1]: #第乙個數和第二個進行比較 如果第乙個數大於第二個數就進行交換(公升序)
# if li[j] < li[j+1]: 第乙個數小於第二個數就進行交換(降序)
li[j],li[j+1] = li[j+1],li[j]
exchange = true # 如果發生交換,那麼證明列表中還是有需要進行比較 即無序狀態
#print li
if not exchange: #如果沒有發生改變,那麼已經排序完畢,結束迴圈(對於不是非常混亂的列表,可以減少迴圈次數,節省時間,結束演算法即可)
return li
#氣泡排序 在為改進之前的時間複雜度是 o(n^2) 在改進之後【exchange = false #增加標識 以減少迴圈次數】最優情況為o(n)
li = [1,0,3,4,2,9,7,8,5]
print li
if __name__ == "__main__":
print bubble_sort(li)
_________
//氣泡排序 php
function bubble_sort($li)
} if (!$exchange)
} }$li = [1,0,3,4,2,9,7,8,5];
//$li = [1,2,3,4,5,6,7,8,9];
//echo search($li,10);
//echo binary_search($li,9);
var_dump( bubble_sort($li));
python php 快速排序
usr bin python coding utf 8 def partition li,left,rigth temp li left 獲取第乙個值假定為列表的中間值 while left rigth 如果中間值的左邊小於右邊 則說明比較的值左邊為空 則將值復還結束演算法 while left r...
氣泡排序 排序 氣泡排序
既然寫了計組思來想去便打算把資料結構也寫下來,寫的時候總是發現看的時候無法發現的問題,受益良多。交換排序的基本思想 exchange until sorted 順序,分支,迴圈 注意偽 的熟悉 下面介紹兩種交換演算法 首先進行聯想,用乙個圖進行輔助聯想 水冒泡過程 頂部是陣列的begin,底部理解為...
氣泡排序 氣泡排序法
冒泡法是一種簡單的排序方法,它的實現非常簡單。首先對n個專案進行掃瞄,比較相領兩個專案的大小,若發現違背大小次序則進行互換,由此可以使n個專案中的最大者換到最後。然後對剩下的未排序好的專案再進行掃瞄,使它們的最大者換到表的最後。以此類推,直到將表全部排序好為止。這種排序方法,每遍掃瞄以後,都縮短了待...