1. 程式人生 > >排序演算法之快速排序,氣泡排序用python程式碼實現

排序演算法之快速排序,氣泡排序用python程式碼實現

一、快速排序 1.在列表中選出一個基準數(通常為列表的第一個數) 2.將列表中小於基準數的資料移到基準列表的左邊,將大於基準數的資料移到基準數的右邊 3.對於基準數左,右兩邊的列表,不斷重複以上兩個過程,直到每個子集只有一個元素, 即為全部有序的.

def quicksort(nums):
#判斷列表是否為空
    if len(nums) <= 1:
        return nums
#定義一個左子列表
    left = [ ]
#定義一個右子列表
    right = [ ]
#選出一個基準數
    base = nums.pop()
#通過和基準數做比較,劃分列表
    for x in nums:
        if x < base:
            left.append(x)
        else:
            right.append(x)
#返回重新組合的列表
    return quicksort(left) + [base] + quicksort(right)
def main():
    nums = [6,1,2,7,9,3,4,5,10,8]
    print quicksort(nums)
main()

在python2.7的環境下,執行結果如下: 在這裡插入圖片描述 成功完成了排序。 二、氣泡排序 氣泡排序:它重複地編歷要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來,編歷數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成(越小的元素會經由交換慢慢“浮“到數列頂端) 排序過程: 1.比較相鄰的元素,如果第一個比第二個大,交換它們倆. 2.對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對. 這步做完,最後的元素會是最大的數. 3.針對所有元素,重複以上步驟,除最後一個. 4.持續每次對越來越少的元素重複上面的步驟,直到無數字需要比較.

def bubblesort(list):
#判斷列表是否為空
    if list != None:
#如果列表的元素為一個,則什麼也不做
        if len(list) == 1:
            pass
        else:
            for i in range(len(list)):
                for j in range(len(list)-1):
                    if list[j] > list[j+1]:
                        list[j],list[j+1]=list[j+1],list[j]
        print (list)
list1 = [2,5,4,8,6,1,9]
bubblesort(list1)

執行結果如下: 在這裡插入圖片描述 時間複雜度為O(n^2)