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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

算法之旅 | 快速排序法

發布時間:2023/11/29 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法之旅 | 快速排序法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

HTML5學堂-碼匠:前幾期“算法之旅”跟大家分享了冒泡排序法和選擇排序法,它們都屬于時間復雜度為O(n^2)的“慢”排序。今天跟大家分享多種排序算法里使用較廣泛,速度快的排序算法
—— 快速排序法 [ 平均時間復雜度為O (n logn) ]。

Tips 1:關于“算法”及“排序”的基礎知識,在此前“選擇排序法”中已詳細講解,可點擊文后的相關文章鏈接查看,在此不再贅述。
Tips 2:如果無特殊說明,本文的快速排序是從小到大的排序。

快速排序法的原理

快速排序是一種劃分交換排序,它采用分治的策略,通常稱其為分治法

分治法

基本思想:將原問題分解為若干個規模更小但結構與原問題相似的子問題。遞歸地解決這些子問題,然后將這些子問題的結果組合成原問題的結果。

基本原理

從序列中任選一個數作為“基準”;
所有小于“基準”的數,都挪到“基準”的左邊;所有大于等于“基準”的數,都挪到“基準”的右邊;
在這次移動結束之后,該“基準”就處于兩個序列的中間位置,不再參與后續的排序;
針對“基準”左邊和右邊的兩個子序列,不斷重復上述步驟,直到所有子序列只剩下一個數為止。

原理圖解

現有一個序列為 [8, 4, 7, 2, 0, 3, 1],如下演示快速排序法如何對其進行排序。

實現快速排序的步驟分解

選擇“基準”,并將其從原始數組分離

先獲取基準的索引值,再使用splice數組方法取出基準值。

Tips:該實例中, 基準的索引值 = parseInt(序列長度 / 2)
Tips:splice方法會改變原始數組。例如,arr = [1, 2, 3]; 基準索引值為1,基準值為2,原始數組變為arr = [1, 3];

遍歷序列,拆分序列

與“基準”比較大小,并拆分為兩個子序列
小于“基準”的數存儲于leftArr數組當中,大于等于“基準”的數存儲于rightArr數組當中

Tips:當然,也可以將 小于等于“基準”的數存于leftArr,大于“基準”的數存于rightArr
由于要遍歷序列,將每一個數與“基準”進行大小比較,所以,需要借助for語句來實現

遞歸調用,遍歷子序列并組合子序列的結果

定義一個函數,形參用于接收數組

function quickSort(arr) { };

實現遞歸調用遍歷子序列,用concat數組方法組合子序列的結果

判斷子序列的長度

遞歸調用的過程中,子序列的長度等于1時,則停止遞歸調用,返回當前數組。

快速排序法完整代碼

快速排序法的效率

時間復雜度

最壞情況:每一次選取的“基準”都是序列中最小的數/最大的數,這種情況與冒泡排序法類似(每一次只能確定一個數[基準數]的順序),時間復雜度為O(n^2)
最好情況:每一次選取的“基準”都是序列中最中間的一個數(是中位數,而不是位置上的中間),那么每次都把當前序列劃分成了長度相等的兩個子序列。這時候,第一次就有n/2、n/2兩個子序列,第二次就有n/4、n/4、n/4、n/4四個子序列,依此類推,n個數一共需要logn次才能排序完成(2^x=n,x=logn),然后每次都是n的復雜度,時間復雜度為O(n logn)

空間復雜度

最壞情況:需要進行n‐1 次遞歸調用,其空間復雜度為 O(n)
最好情況:需要logn次遞歸調用,其空間復雜度為O(logn)

算法的穩定性

快速排序是一種不穩定排序算法
例如:現有序列為[1, 0, 1, 3],“基準”數字選擇為第二個1
在第一輪比較之后,變成了[0, 1, 1, 3],左序列為[0],右序列為[1, 3](右序列的1是此前的第一個1)
不難發現,原序列的兩個1的先后順序被破壞了,改變了先后順序,自然就是“不穩定”的排序算法了

關于O

在此前的“冒泡排序法”一文當中,我們詳細講解過O是什么,在此就不多說了,直接上圖吧

相關文章鏈接

算法之旅 | 選擇排序法
算法之旅 | 冒泡排序法

開開心心每一天

生活艱辛,代碼不易,但,不要忘記微笑!


總結

以上是生活随笔為你收集整理的算法之旅 | 快速排序法的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 日韩美女在线 | 国产精品欧美激情在线 | 色噜噜一区二区三区 | 免费精品在线视频 | 国产对白自拍 | 亚洲福利网 | 国产又粗又猛又色又 | 国精产品一区一区三区免费视频 | 国产激情精品 | 麻豆视频一区二区三区 | 白丝女仆被免费网站 | 欧美日韩综合 | v在线| 黄色大片视频 | 少妇三级| 99热99re6国产在线播放 | 四虎国产成人永久精品免费 | 国产美女免费观看 | 日韩av资源网 | 超碰免费视| 亚洲第一精品在线 | 成人综合在线观看 | 一级生活毛片 | 少妇高潮一区二区三区99刮毛 | zzjizzji亚洲日本少妇 | 97麻豆| 九色porny蝌蚪视频 | 国产a级网站 | 91麻豆产精品久久久久久 | 日韩黄色片子 | 涩涩涩999 | 内地毛片 | 欧美脚交 | 波多野结衣 在线 | 波多野结衣加勒比 | 国产三级按摩推拿按摩 | cao在线视频 | 欧美性插动态图 | 成人免费看片' | 污视频网站免费看 | 免费av电影网址 | 玖玖zyz | 免费看黄色三级三级 | 亚洲熟女综合色一区二区三区 | 日韩aaaaa| 国产日韩在线一区 | 97精品人妻一区二区 | 苍井空亚洲精品aa片在线播放 | 久操视频免费在线观看 | va在线视频 | 久久精品国产av一区二区三区 | 精品免费在线观看 | 欧美大片一级 | 成人片在线视频 | 在线观看xxxx | 国产日韩综合 | 爱爱视频在线免费观看 | 欧美日韩精品电影 | 无码国产精品一区二区色情男同 | 在线观看黄色动漫 | 亚洲高清在线观看视频 | 国产一级黄色录像 | 久久婷婷五月综合色国产香蕉 | 日韩视频欧美视频 | 女人夜夜春 | 亚洲精品乱码久久久久久国产主播 | 能看的av网站 | 国产999久久久 | 国产chinasex对白videos麻豆 | 日本中文字幕在线 | 丰满少妇乱子伦精品看片 | 欧美电影一区 | 在线观看午夜视频 | aa毛片视频 | 日韩夫妻性生活 | 国产在线青青草 | 毛片在线视频 | 日韩成人欧美 | 99视频+国产日韩欧美 | 噜噜噜av | 日本熟妇成熟毛茸茸 | 免费黄色短片 | 在线视频日韩欧美 | 久草最新视频 | 美女试爆场恐怖电影在线观看 | 精品亚洲中文字幕 | 国产综合在线播放 | 黄色一级片久久 | 制服丝袜手机在线 | 欧美精品在欧美一区二区 | 久久久精品电影 | 农村妇女愉情三级 | 美色视频| 亚洲一区二区乱码 | 中文字幕日韩欧美在线 | 波多野结衣一级 | 国产精品女同一区二区 | 日韩欧美一区二区一幕 | 久久人妖|