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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

图解算法学习笔记(四):快速排序

發布時間:2023/12/10 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图解算法学习笔记(四):快速排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

1)?示例1:

2)快速排序

3) 再談大O表示法

4)小結


本章內容:學習分而治之,快速排序

1)?示例1:

假設你是農場主,有一小塊土地,你要將這塊地均勻分成方塊,且分出的方塊盡可能大。如何分?

你要將這塊地均勻分成方塊,且分出的方塊要盡可能大。顯然,下面的分法不符合要求。

此時,你應該使用D&C策略(divide and conquer)。包括兩步驟:

(1) 找出基線條件,這種條件必須盡可能簡單。

(2)不斷將問題分解(或者說縮小規模),直到符合基線條件。

下面就來使用D&C找出問題的解決方案。首先,找出基線條件。最容易處理的情況是,一條邊的長度是另一邊的整數倍。

現在找出遞歸條件,這正是D&C的用武之地。每次遞歸都必須縮小問題的規模,如何縮小問題的規模呢,首先,找出這塊地可容納的最大方塊。

如圖,劃出了兩個方塊,同時余下一小塊地。現在是頓悟時刻,何不對余下的那一小塊地使用相同的算法呢?

這里有一個關鍵的地方,就是適用于這小快地的最大方塊,也是適用于整塊地的最大方案。感興趣的可以查查歐幾里得算法。

https://www.khanacademy.org/computing/computer-science/cryptography/modarithmetic/a/the-euclidean-algorithm

接下來就是使用同樣算法。直到余下土地為方塊。

? ? ? ? ? ?

? ? ??

現在我們找到了最大方塊,如下圖:

2)快速排序

快速排序是一種常用的排序算法,比選擇排序快得多,例如,C語言標準庫的函數qsort實現的就是快速排序。

對排序算法來說,最簡單的數組什么樣呢?就是根本不需要排序的數據。

因此,基線條件為數組為空或只包含一個元素。在這種情況,只需返回數組:

def quicksort(array):if len(array) < 2:return array

我們來看更長的數組。對包含兩個元素的數組進行排序也很容易:

包含三個元素呢?

現在介紹快速排序的工作原理:首先,從數組中選擇一個元素,這個元素被稱為基準值(pivot).

我們暫時將數組的第一個元素用作基準值.接下來,找出比基準值小的元素以及比基準值大的元素。

這被稱為分區(partitioning)。這里只進行了分區,得到的兩個子數組是無序的。如何對子數組進行排序呢?對于包含兩個元素的數組以及空數組,快速排序知道如何將它們排序。因此對這兩個子數組進行快速排序,再合并結果,就得到一個有序數組!

quicksort([15, 10]) + [33] + quicksort([]) > [10, 15, 33]

現在我們知道了如何對包含三個元素的數組進行排序了:

(1)選準基準值。

(2)將數組分成兩個子數組:小于基準值的元素和大于基準值的元素。

(3)對這兩個子數組進行快速排序。

下面是快速排序的代碼:

def quicksort(array):if len(array) < 2:return arrayelse:pivot = array[0]less = [i for i in array if i<= pivot]greater = [i for in array if i > pivot]return quicksort(less) + [pivot] + quicksort(greater)

?

3) 再談大O表示法

我們再來看看常見的大O運行時間:

這里需要說明的是,在平均情況下,快速排序的運行時間為O(n logn)。

快速排序的性能高度依賴于你選擇的基準值。來看下面這樣一個有序數組,每次都選擇第一個元素為基準值,來看看快速排序過程,

現在選擇中間元素作為基準值,看看排序過程:

第一個示例展示的是最糟情況,棧長為O(n),第二個示例展示的是最佳情況,棧長為O(log n)。與此同時,在調用棧的每層都涉及全部8個元素,操作數為O(n)。

現在可以得出快速排序的運行時間為O(n logn)(最佳情況),最佳情況也是平均情況。

4)小結

  • D&C將問題逐步分解,使用D&C處理列表時,基線條件很可能是空數組或只包含一個元素的數組;
  • 實現快速排序時,請隨機選地選擇用做基準值的元素,快速排序的平均運行時間為O(n log n);
  • 大O表示法中的常量有時候事關重大,這就是快速排序比合并排序快的原因所在;
  • 比較簡單查找和二分查找時,常量幾乎無關緊要,因為列表很長時,O(log n)的速度為O(n)塊很多。

總結

以上是生活随笔為你收集整理的图解算法学习笔记(四):快速排序的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 欧美激情综合网 | 国产一区二区在线免费观看视频 | a在线免费 | 欧美精品成人一区二区三区四区 | 激情综合文学 | 色男人天堂av | 99久久婷婷国产综合精品 | 尤物av无码色av无码 | 奇米影视77777| 日本在线观看中文字幕 | 艳母动漫在线播放 | 丁香花高清在线 | 国产日韩欧美视频在线 | 日本少妇性高潮 | 日韩系列在线 | 国产大片一区二区三区 | 狠狠干美女| 国产精品热久久 | 亚洲图片在线 | 午夜天堂网 | 欧美午夜理伦三级在线观看 | 麻豆影视大全 | 久久久老熟女一区二区三区91 | 久久网页 | 日韩一区二区在线观看 | 精品伊人久久 | av在线观 | 香蕉视频ap| 精品国产鲁一鲁一区二区三区 | 亚洲成人精品久久久 | av电影在线不卡 | 麻豆人妻少妇精品无码专区 | 欧美大片高清免费观看 | 久久爱影视 | 丰满女邻居的色诱4hd | 黄a网站 | 六月激情综合网 | www精品国产 | 青青草原伊人网 | 男人天堂手机在线 | 97国产在线 | 亚洲AV无码成人精品区明星换面 | 国产成人免费看一级大黄 | 啪啪综合网 | 精品96久久久久久中文字幕无 | 国产精品一区二区在线免费观看 | 欧美激情在线观看 | 一级欧美一级日韩 | 欧美在线色图 | 亚洲人成网址 | 在线观看免费的av | 中文字幕国产日韩 | 欧美日韩加勒比 | 蜜桃av中文字幕 | 四虎永久免费在线观看 | 国产 欧美 日韩 一区 | 善良的老师伦理bd中字 | 99少妇| 少妇激情四射 | 中文字幕亚洲色图 | 瑟瑟视频免费观看 | 另类综合在线 | 欧美啪啪网| 亚洲成人一区在线观看 | 疯狂做受xxxx国产 | 天海翼一区| 日韩人妻精品无码一区二区三区 | 欧美噜噜噜 | 国产乱子伦农村叉叉叉 | 天天宗合 | 91爱啪| 六月婷婷中文字幕 | 精品人妻一区二区三区蜜桃 | 日韩成人午夜电影 | 欧美a√ | 成年免费视频黄网站在线观看 | 国产免费av一区二区 | 91在线视频网址 | 九九视频在线免费观看 | 性史性dvd影片农村毛片 | 国产精品VideoSex性欧美 | 亚洲成人网在线 | 免费的黄色的网站 | 桃色av网站 | 亚洲欧美另类一区 | 亚洲资源在线 | 日本做爰三级床戏 | 日韩插插 | 少妇扒开粉嫩小泬视频 | 久久午夜国产 | av天天堂 | 国产免费自拍 | 午夜视频一区二区三区 | 小毛片网站| 男女裸体影院高潮 | 精品一区二区三区视频在线观看 | 99免费视频 | 日本网站免费观看 | 91视频二区 |