中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

哈爾濱seo優(yōu)化排名免費咨詢廈門百度關(guān)鍵詞seo收費

哈爾濱seo優(yōu)化排名免費咨詢,廈門百度關(guān)鍵詞seo收費,做網(wǎng)上商城網(wǎng)站設(shè)計,什么是設(shè)計方案8.4 快速排序 快速排序是一種分而治之的排序算法。它通過隨機選擇一個基準(zhǔn)元素,將數(shù)組分為兩部分。 一部分比基準(zhǔn)元素小,另一部分比基準(zhǔn)元素大,之后對兩部分排序。 快速排序以其平均情況下的 O(n log n) 時間復(fù)雜度和良好的性能而廣泛應(yīng)用…

8.4 快速排序

快速排序是一種分而治之的排序算法。它通過隨機選擇一個基準(zhǔn)元素,將數(shù)組分為兩部分。

一部分比基準(zhǔn)元素小,另一部分比基準(zhǔn)元素大,之后對兩部分排序。

快速排序以其平均情況下的 O(n log n) 時間復(fù)雜度和良好的性能而廣泛應(yīng)用。

本節(jié)代碼存放目錄為 lesson20


概念與原理

快速排序的基本思想

  • 選擇基準(zhǔn)元素:從數(shù)組中選擇一個元素作為基準(zhǔn),通常選擇第一個元素或最后一個元素,也可以隨機選擇。

  • 劃分?jǐn)?shù)組:將數(shù)組中的其他元素與基準(zhǔn)元素進(jìn)行比較,按照小于基準(zhǔn)大于基準(zhǔn)分成兩部分。

  • 遞歸排序:對基準(zhǔn)元素兩側(cè)的子數(shù)組分別遞歸地進(jìn)行快速排序。

  • 合并結(jié)果:經(jīng)過每一輪劃分和遞歸,數(shù)組最終變得有序。

總的來說,就是選出一個元素,通過與該基準(zhǔn)元素的對比得到兩個序列,左邊的序列小于基準(zhǔn),右邊的序列大于基準(zhǔn)。

下一步再分別針對左邊、右邊進(jìn)行遞歸的快速排序,最終左邊、右邊也都是有序的序列。


快速排序的步驟示例

給定如下無序數(shù)組,按照從小到大排序:

[5, 3, 8, 4, 2]

通過快速排序的步驟如下:

第一步:選擇基準(zhǔn)元素- 選擇數(shù)組最后一個元素 2 作為基準(zhǔn),劃分?jǐn)?shù)組。- 比基準(zhǔn)小的元素:[](沒有元素小于 2)- 比基準(zhǔn)大的元素:[5, 3, 8, 4]- 將基準(zhǔn)元素 2 放在數(shù)組的正確位置,結(jié)果:[2, 3, 8, 4, 5]第二步:遞歸排序- 遞歸排序左側(cè)數(shù)組(空數(shù)組,不需要處理)- 遞歸排序右側(cè)數(shù)組 [3, 8, 4, 5]第三步:選擇基準(zhǔn)元素- 選擇 5 作為基準(zhǔn),劃分?jǐn)?shù)組。- 比基準(zhǔn)小的元素:[3, 4]
- 比基準(zhǔn)大的元素:[8]- 將基準(zhǔn)元素 5 放在數(shù)組的正確位置,結(jié)果:[2, 3, 4, 5, 8]第四步:遞歸快速排序- 遞歸快速排序左側(cè)數(shù)組 [3, 4],選擇基準(zhǔn) 4,劃分為 [3] 和 4- 最終排序結(jié)果為 [2, 3, 4, 5, 8]

通過快速排序,數(shù)組最終被排序為 [2, 3, 4, 5, 8]。


快速排序的時間復(fù)雜度

快速排序的時間復(fù)雜度取決于基準(zhǔn)元素的選擇:

  • 最壞情況O(n2),當(dāng)基準(zhǔn)元素總是選擇最小或最大值時,導(dǎo)致數(shù)組無法被均勻劃分。

  • 最好情況O(n log n),當(dāng)每次劃分都將數(shù)組均勻地分成兩半。

  • 平均情況O(n log n),通常情況下,快速排序的表現(xiàn)非常接近 O(n log n)


Go語言的實現(xiàn)

實現(xiàn)代碼如下:

// partition 函數(shù)實現(xiàn)數(shù)組的劃分
func partition(arr []int, low, high int) int {pivot := arr[high] // 選擇最后一個元素作為基準(zhǔn)i := low - 1       // i 代表已處理的元素區(qū)間// 遍歷數(shù)組,將小于 pivot 的元素移到前面for j := low; j < high; j++ {if arr[j] < pivot {i++arr[i], arr[j] = arr[j], arr[i]}}// 將基準(zhǔn)元素放到正確位置arr[i+1], arr[high] = arr[high], arr[i+1]return i + 1 // 返回基準(zhǔn)元素的位置
}// quickSort 實現(xiàn)快速排序
func quickSort(arr []int, low, high int) {if low < high {// 劃分?jǐn)?shù)組,并獲取基準(zhǔn)元素的位置pi := partition(arr, low, high)// 遞歸排序基準(zhǔn)左側(cè)和右側(cè)的子數(shù)組quickSort(arr, low, pi-1)quickSort(arr, pi+1, high)}
}func main() {arr := []int{5, 3, 8, 4, 2}quickSort(arr, 0, len(arr)-1)fmt.Println("最終排序結(jié)果: ", arr)
}

執(zhí)行結(jié)果如下所示:

最終排序結(jié)果:  [2 3 4 5 8]

小結(jié)

本節(jié)我們講解了快速排序的基本原理、步驟示例和 Go 語言的實現(xiàn)。

關(guān)于本節(jié)總結(jié)如下:

  • 時間復(fù)雜度:快速排序的平均時間復(fù)雜度為 O(n log n),但最壞情況下會退化為 O(n2)。

  • 穩(wěn)定性:快速排序是不穩(wěn)定的排序算法。

  • 應(yīng)用場景:快速排序在處理大規(guī)模數(shù)據(jù)時非常高效,適用于數(shù)據(jù)量較大且對排序性能要求高的場景。


我的GitHub:https://github.com/swxctx

書籍地址:https://gs.golang.website/

書籍代碼:https://github.com/YouCanGolang/GoStructedCode

http://www.risenshineclean.com/news/3588.html

相關(guān)文章:

  • 口碑好的專業(yè)網(wǎng)站建設(shè)手機助手
  • 江蘇揚州疫情最新消息哈爾濱百度搜索排名優(yōu)化
  • 村政府可以做網(wǎng)站么企業(yè)宣傳冊
  • php網(wǎng)站開發(fā)實用技術(shù)答案產(chǎn)品推廣渠道
  • 南寧公司網(wǎng)站模板建站b站推廣是什么意思
  • 網(wǎng)站設(shè)計工具網(wǎng)絡(luò)營銷推廣軟件
  • 桃子網(wǎng)站惠州搜索引擎優(yōu)化
  • 友匯網(wǎng)站建設(shè)一般多少錢自媒體發(fā)布平臺
  • 網(wǎng)站建設(shè)怎么申請域名網(wǎng)址seo優(yōu)化排名
  • 西安網(wǎng)站建設(shè)的費用企業(yè)策劃
  • 阜城網(wǎng)站建設(shè)公司啟信聚客通網(wǎng)絡(luò)營銷策劃
  • 網(wǎng)站建設(shè)公司創(chuàng)意軟文范例800字
  • 做民宿上幾家網(wǎng)站好廣點通推廣登錄入口
  • 鄭州專業(yè)做網(wǎng)站手機百度高級搜索入口
  • 網(wǎng)站模板怎么打開網(wǎng)絡(luò)營銷策略的內(nèi)容
  • 青島外貿(mào)網(wǎng)站建設(shè)哪家好網(wǎng)絡(luò)事件營銷
  • 福州網(wǎng)站建設(shè)方案長沙seo外包
  • 安全月考評哪個網(wǎng)站做北京網(wǎng)站建設(shè)公司案例
  • 簡單設(shè)計網(wǎng)站百度官網(wǎng)推廣
  • java做網(wǎng)站軟件太原seo關(guān)鍵詞排名優(yōu)化
  • 建立門戶網(wǎng)站的步驟網(wǎng)絡(luò)廣告投放網(wǎng)站
  • 交友網(wǎng)站app推廣今日熱點新聞15條
  • 南陽網(wǎng)站排名優(yōu)化公司企業(yè)網(wǎng)站推廣可以選擇哪些方法
  • 濱江區(qū)網(wǎng)站開發(fā)公司百度競價托管一月多少錢
  • vs中新建網(wǎng)站和新建web項目的區(qū)別電腦培訓(xùn)學(xué)校網(wǎng)站
  • 網(wǎng)站建設(shè)開發(fā)公司有哪些企業(yè)站seo報價
  • wamp 設(shè)置多個網(wǎng)站愛鏈在線
  • 網(wǎng)站設(shè)計需要考慮哪些基本原則知乎關(guān)鍵詞排名優(yōu)化
  • 如何制作手機免費網(wǎng)站模板下載排名網(wǎng)
  • 日本網(wǎng)站服務(wù)器安徽網(wǎng)站關(guān)鍵字優(yōu)化