使用python3實現(xiàn)冒泡排序、選擇排序和快速排序

冒泡排序的時間復(fù)雜度是O(n^2),選擇排序的時間復(fù)雜度也是O(n^2),這是因為這兩種排序算法的元素比較次數(shù)是相同的。但因為冒泡排序是每比較一次,就會交換一次,而選擇排序是每一輪循環(huán)結(jié)束后才進行一次交換。所以,選擇排序要相對速度更快一些。

冒泡排序
def bubbleSort(nums):
    
    for i in range(0, len(nums)):
        for j in range(0, (len(nums) - 1 - i)):
            if nums[j] > nums[j+1]:
                temp = nums[j]
                nums[j] = nums[j+1]
                nums[j+1] = temp

    return nums
選擇排序
def selectSort(nums):

    for i in range(len(nums) - 1, 0, -1):
        maxIndex = 0
        for j in range(1, i + 1):
            if nums[j] > nums[maxIndex]:
                maxIndex = j
        temp = nums[i]
        nums[i] = nums[maxIndex]
        nums[maxIndex] = temp

    return nums
快速排序
def quickSort(nums, left, right):

    i = left
    j = right
    base = nums[left]

    if i < j:
        return nums

    while i != j:
        while nums[j] >= base and i < j:
            j = j - 1
        while nums[i] <= base and i < j:
            i = i + 1

        if i < j:
            temp = nums[i]
            nums[i] = nums[j]
            nums[j] = temp

        nums[left] = nums[i]
        nums[i] = base

        quickSort(nums, left, i-1)
        quickSort(nums, i+1, right)

    return nums
調(diào)用
nums = [23, 18, 232, 10, 5, 88, 34, 11, 9]

newNums1 = bubbleSort(nums)
newNums2 = selectSort(nums)
newNums3 = quickSort(nums, 0, len(nums) - 1)

print(newNums1)
print(newNums2)
print(newNums3)
打印結(jié)果
[5, 9, 10, 11, 18, 23, 34, 88, 232]
[5, 9, 10, 11, 18, 23, 34, 88, 232]
[5, 9, 10, 11, 18, 23, 34, 88, 232]

Have fun.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容