Python中的四種排序(冒泡,插入,選擇,快速)以及楊輝三角實例解析

四種排序方法是學習理解編程語言的需要,本文只是簡單舉例並貼出代碼,不做詳細的算法原理解析!

冒泡排序

冒泡排序是最爲基礎的算法,需要理解和掌握,它是對序列進行遍歷交換的過程,大的元素移動到末尾,直到隊列有序!
原理圖

nums = [[1,9,8,5,6,7,4,3,2]
print(nums)
length = len(nums)
count_swap = 0
count = 0
for i in range(length):
    for j in range(length-i-1):
        count += 1
        if nums[j] > nums[j+1]:
            tmp = nums[j]
            nums[j] = nums[j+1]
            nums[j+1] = tmp
            count_swap += 1
print(nums,count_swap,count)

時間複雜度:O(n²)

插入排序

插入排序是默認當前的序列有序,將新元素插入到應該在的位置!

def insert_sort(array):
    for i in range(len(array)):
        for j in range(i):
            if array[i] < array[j]:
                array.insert(j, array.pop(i))                
                break        
    return array
print(insert_sort([4,5,2,6,8]))

時間複雜度:O(n²)

選擇排序

選擇排序的原理比較簡單,首先它是將第一個元素和剩下的元素進行逐個比較,把最小的元素交換到最前面的位置,接下來再把第二個元素和第三個到最後一個比較,找出第二小的元素放到第二個位置,以此類推!

def select_sort(array):
    for i in range(len(array)):
        x = i  # min index
        for j in range(i, len(array)):
            if array[j] < array[x]:
                x = j
        array[i], array[x] = array[x], array[i]
    return array
print(select_sort([4,5,2,6,8]))

時間複雜度:O(n²)

快速排序

快速排序的原理就是設置2個標杆,將序列一分爲二,一個從前往後遍歷,一個從後到前遍歷,將二者進行比較,當左側的數據大於右側的,數據交換,當比較到最後一個共同的數據時,遍歷結束!此時,左側標杆的數據都小於右側的,再對左右2個標杆的數據進行遞歸得出序列!

def quick_sort(array):
    def recursive(begin, end):
        if begin > end:
            return
        l, r = begin, end
        pivot = array[l]
        while l < r:
            while l < r and array[r] > pivot:
                r -= 1
            while l < r and array[l] <= pivot:
                l += 1
            array[l], array[r] = array[r], array[l]
        array[l], array[begin] = pivot, array[l]
        recursive(begin, l - 1)
        recursive(r + 1, end)

    recursive(0, len(array) - 1)
    return array
print(quick_sort([4,5,2,6,8]))

時間複雜度:O(nlog₂n)

楊輝三角

楊輝三角定義圖
這裏寫圖片描述

triangle = []
n = 6
for i in range(0,n):
    if i == 0:
        triangle.append(1)
        print(triangle)
    else:
        pre = triangle[i - 1]
        cur = [1]
        for j in range(0,i - 1):
            if j == None:
                break
            else:
                cur.append(pre[j] + pre[j+1])
        cur.append(1)
        triangle.append(cur)
        print(cur)
print(triangle)   //楊輝三角
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章