日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

时间复杂度为on的排序算法_排序算法amp;时间复杂度计算

發布時間:2025/3/19 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 时间复杂度为on的排序算法_排序算法amp;时间复杂度计算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對于排序算法而言,有幾個重要的點:

  • 理解此種排序算法是怎么運行的
  • 理解算法的時間復雜度與空間復雜度計算
  • 遞推公式(關乎時間復雜度的計算)


    遞推公式主要為以下的形式(遞歸使用的復雜度也這么算):

    具體推導:

    https://jeffe.cs.illinois.edu/teaching/algorithms/notes/99-recurrences.pdf?jeffe.cs.illinois.eduhttps://www.cs.ucdavis.edu/~gusfield/cs222f07/mastermethod.pdf?www.cs.ucdavis.edu

    公式1的遞推公式復雜度計算:

    Analysis of Algorithm | Set 4 (Solving Recurrences) - GeeksforGeeks?www.geeksforgeeks.org

    如何推導的三種方法

  • Substitution Method
  • Substitution Method

    2. 遞歸樹(大體思路是使用樹的思想來計算時間復雜度,將每一層的復雜度算出來,然后將所有層的時間復雜度相加)

    Recurrence Tree Method

    3. Master Method(萬能方法,可以直接得到遞歸方程的解,但是只有以下形式可以利用)

    Master Method

    Merge sort:(

    Binary Search:(

    如果還有不清楚的,可以做一下以下的練習

    https://www.csd.uwo.ca/~mmorenom//CS424/Ressources/master.pdf?www.csd.uwo.ca

    插入排序()

    按照順序溫習了一下算法,用Python實現的,格式是按照leetcode寫的。

    十大經典排序算法動畫與解析,看我就夠了!(配代碼完全版)-五分鐘學算法?www.cxyxiaowu.com「多圖警告」手撕排序算法 - iOS進階必備?mp.weixin.qq.com

    個人感覺動畫沒辦法看清楚算法的演變過程,所以是 動畫+示意圖

    冒泡排序

    class Solution:def bubble_sort(self, my_list):for i in range(1, len(my_list)):for j in range(i):if my_list[i] < my_list[j]:buble = my_list[i]my_list[i] = my_list[j]my_list[j] = bublereturn my_listdef main():my_list = [9,2,3,8,5,7,4,6,1]test = Solution()results = test.bubble_sort(my_list)print(results)if __name__ == '__main__':main()

    冒泡排序優化

    選擇排序

    class Solution:def selection_sort(self, my_list):for i in range(len(my_list)):selection_min = i# 找到最小的for j in range(i + 1, len(my_list)):if my_list[j] < my_list[selection_min]:selection_min = j# 交換exchange_num = my_list[selection_min]my_list[selection_min] = my_list[i]my_list[i] = exchange_numreturn my_listdef main():my_list = [9,2,3,8,5,7,4,6,1]test = Solution()results = test.selection_sort(my_list)print(results)if __name__ == '__main__':main()

    插入排序

    Python 插入排序 | 菜鳥教程?www.runoob.comclass Solution:def insert_sort(self, arr): for i in range(1, len(arr)): key = arr[i] j = i-1while j >=0 and key < arr[j] : arr[j+1] = arr[j] #每次往后面移動一個位置j -= 1arr[j+1] = key # 交換return arrdef main():my_list = [9,2,3,8,5,7,4,6,1]test = Solution()results = test.insert_sort(my_list)print(results)

    歸并排序

    歸并排序

    堆排序

    list = [1, 8, 2, 23, 7, -4, 18, 23, 42, 37, 2]

    紅色:list里面儲存數據的序號largest = i # Initialize largest as root l = 2 * i + 1 # left = 2*i + 1 你是left子節點,也是下一層的父節點 r = 2 * i + 2 # right = 2*i + 2 你是right子節點,也是下一層的父節點

    heapify使用了一個遞歸方程,主要保證了最大(小)堆一定是滿足條件1,2,3的,用遞歸主要是為了便利所有的節點。

    heapsort最奇怪的是for循環是從n-->1,這個算法是一個o(n)的算法,如果是從根節點向下取尋找最大值的話,那么如果最大值在最后的葉子節點,就算找到了最大值,也無法通過交換到根節點,如果是從葉子節點開始便利那么每一個節點的最大值,就會通過二叉樹交換到根節點。

    heapsort使用已經建立好的max heap,每次取第一個數字,放到List最后面。然后重新heapfiy

    # Python program for implementation of heap Sort# To heapify subtree rooted at index i. # n is size of heap def heapify(arr, n, i):"""max heap(1). 父節點必須大于左右節點(2). 頂層的節點(root)必須是最大的(3). 左邊的節點必須大于右邊的節點(4). 必須是完全二叉樹"""largest = i # Initialize largest as rootl = 2 * i + 1 # left = 2*i + 1 你是left子節點,也是下一層的父節點r = 2 * i + 2 # right = 2*i + 2 你是right子節點,也是下一層的父節點# See if left child of root exists and is# greater than rootif l < n and arr[i] < arr[l]:largest = l# See if right child of root exists and is# greater than rootif r < n and arr[largest] < arr[r]:largest = r# Change root, if neededif largest != i:arr[i],arr[largest] = arr[largest],arr[i] # swap# Heapify the root.heapify(arr, n, largest)# The main function to sort an array of given size def heapSort(arr):n = len(arr)# Build a maxheap.for i in range(n//2, -1, -1):heapify(arr, n, i)# One by one extract elementsfor i in range(n-1, 0, -1):arr[i], arr[0] = arr[0], arr[i] # swapheapify(arr, i, 0)# Driver code to test above arr = [ 12, 11, 13, 7, 5, 6, 18] heapSort(arr) # n = len(arr) print(arr) # This code is contributed by Mohit Kumra

    疑問1:heapify為什么是o(nlogn)的算法

    疑問2:heapify為什么是不穩定的算法

    疑問3:heapify

    計數排序

    桶排序

    基數排序

    總結

    以上是生活随笔為你收集整理的时间复杂度为on的排序算法_排序算法amp;时间复杂度计算的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚洲国产成人一区 | av免费在线网站 | 国产精品99久久久久久久久 | 日本三级小视频 | 国产美女特级嫩嫩嫩bbb | 热逼视频 | 欧美一区二区三区四 | 国产精品一区在线播放 | 成人在线视频播放 | 国产精品国产一区二区 | 日本xxxxwww| 久久精品久久久久 | 色窝| 奇米超碰在线 | 污视频在线免费观看 | 怡红院精品视频 | 青青国产在线观看 | 午夜激情视频在线播放 | 91在线资源| 亚洲天堂国产精品 | 麻豆 国产 | 精品一区二区三区国产 | 美腿丝袜亚洲综合 | 精品二区视频 | 九九热在线观看 | 一级福利片 | 四色成人网 | 亚洲美女中文字幕 | 国产一级特黄毛片 | 国产一区二区视频在线观看 | www中文在线 | 日本xxxwww| 日韩精品综合 | 精品国产一区二区三区无码 | 欧美大片一区二区三区 | 日韩在线一区视频 | 亚洲国产日韩欧美 | 亚洲av色香蕉一区二区三区 | 日韩精品你懂的 | 96福利视频 | 亚洲精品白虎 | 永久免费在线看片 | 极品美女无套呻吟啪啪 | 久久久久99精品成人片毛片 | 欧美极品一区二区 | 四虎在线影视 | 国产毛片基地 | 天天爱夜夜爱 | 国产大片aaa | 爱爱免费网站 | 激情综合五月 | 国产剧情av在线 | 精品免费在线 | 男人天堂视频在线观看 | 日本九九热 | 男人天堂网在线观看 | 人人干人人草 | 91在线视频网址 | 综合伊人久久 | 国产精选在线 | 成人深夜福利视频 | 强行侵犯视频在线观看 | 91精品国产乱码久久久 | 尤物一区| 日韩精品h | 一区二区三区四区免费视频 | 国产午夜在线一区二区三区 | 777色| 男女草比视频 | 中文国产视频 | 欧美精品免费一区二区 | 国产视频手机在线观看 | 免费在线观看一区 | 中文字幕少妇在线三级hd | 成人18视频在线观看 | 成人尹人 | 欧美无马 | 久久国产高清 | 成人97| 国产欧美一区二区三区在线 | 天堂中文在线视频 | 日韩不卡 | 中国亚洲女人69内射少妇 | 欧美图片自拍偷拍 | 印度午夜性春猛xxx交 | 亚洲精品一区二区三区精华液 | 男人天堂成人网 | 欧美女人交配视频 | 在线成人免费 | 国产精品久久久久久吹潮 | 打屁股疼的撕心裂肺的视频 | 日日操夜夜骑 | 人妻少妇精品一区二区三区 | 成人va视频 | 中日韩中文字幕 | 小镇姑娘1979版 | 制服丝袜在线第一页 | 国产高清在线一区 | 亚洲精品免费在线视频 |