日韩性视频-久久久蜜桃-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)塊很多。

總結

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

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

主站蜘蛛池模板: 69国产精品 | 丰满人妻老熟妇伦人精品 | 久久av资源站 | 777奇米四色 | 超薄肉色丝袜一二三 | 91九色网站 | 精品国产99久久久久久 | 欧美做爰全过程免费看 | 91成人免费在线视频 | 日日噜噜夜夜狠狠久久丁香五月 | 宇都宫紫苑在线播放 | 久草97| h网址在线观看 | 国产日本欧美在线观看 | 亚洲情趣 | 亚洲综合免费视频 | 夜夜爽夜夜 | 国产一级色 | 欧美一区二区三区视频在线 | 91精品国产视频 | 少妇高潮大叫好爽喷水 | 国产天天射 | 成人香蕉网| 进去里在线观看 | 国产白丝精品91爽爽久久 | 日本精品一区 | 中国丰满老妇xxxxx交性 | 四季av中文字幕 | 亚洲一区二区三区四区五区午夜 | www.色天使 | 国产伦精品一区二区三区在线 | 国产午夜手机精彩视频 | 人人cao | 17c一起操| 亚洲图片在线观看 | 亚欧洲精品视频 | 国产小视频一区 | 少妇毛片视频 | 亚洲成人精品一区 | 四虎永久免费在线观看 | 在线观看h网站 | 国产第四页 | 操一操日一日 | 天天干在线播放 | 亚洲精品2区 | 女人喷潮完整视频 | 青青视频免费 | 奇米影视四色777 | 亚洲三级影视 | 最新国产精品自拍 | 青娱网电信一区电信二区电信三区 | 精品国产乱码久久久久久蜜柚 | 亚洲爱色 | 男朋友是消防员第一季 | 男人的天堂色 | 天天操操夜夜操操 | 国产 福利 在线 | 久久精品99国产精品日本 | 91九色国产 | 日韩久久久久久久 | 黄色香蕉网站 | 日韩伦理av| 亚洲乱人伦 | 一个色综合导航 | 又黄又免费的网站 | 麻豆久久久久久 | www.com在线观看 | 最新啪啪网站 | sese视频在线观看 | 91视频免费 | 国产精品视频久久久 | 国产精品视频一区二区三区, | 九九热视频在线播放 | 欧美激情视频网站 | 国产91一区在线精品 | 人人草人人 | 国产精品999在线观看 | 欧美熟妇精品一区二区蜜桃视频 | 木木影院 | 深夜视频在线看 | 亚洲视频精选 | aaa一区二区 | 欧美中文字幕一区二区 | 日韩天天操 | 美女视频免费在线观看 | 国产一区二区三区视频免费观看 | 午夜一级免费 | 日本最黄网站 | 骚虎av在线| 国产99久久久国产精品免费看 | 国产成人精品亚洲精品色欲 | 香蕉视频黄色 | 欧美少妇xxxxx | 国产男男gay体育生网站 | 亚洲网站免费观看 | 久久人人爽人人人人片 | www激情 | 蜜乳av一区| 黄色xxxxx|