排序算法簡述(第八jiang)

目錄

排序

選擇排序 O(n2)

不穩定:48429

歸并排序 O(n log n) 穩定

插入排序 O(n2)

堆排序 O(n log n)

希爾排序 O(n log2 n)

圖書館排序 O(n log n)

冒泡排序 O(n2)

優化:

基數排序 O(n · k)

快速排序 O(n log n)【分治】 不穩定

桶排序 O(n + k)

計數排序 O(n + k)

鴿巢排序 O(n + D)


排序

什么是穩定排序算法:數據先后次序不變

選擇排序 O(n2) 歸并排序 O(n log n)插入排序 O(n2) 堆排序 O(n log n)希爾排序 O(n log2 n) 圖書館排序 O(n log n)冒泡排序 O(n2) 基數排序 O(n · k)快速排序 O(n log n) 桶排序 O(n + k)計數排序 O(n + k)鴿巢排序 O(n + D):

選擇排序 O(n2)

? 先找出最小值,將其與第一個位置的元素進行交換

? 對剩余的數據重復以上過程,直至排序結束

不穩定:48429

歸并排序 O(n log n) 穩定

歸并:如果有兩個分別有序的數組,可以用雙指針合并成一個完全有序的數組

可以遞歸寫

也可以從0開始

歸并1-1? 1-1? 1-1? 1-1

歸并? ?2-2? ? ? ? ? 2-2

歸并? ? ? ? ?4-4

完成!

插入排序 O(n2)

假設前面 k 個元素已經按順序排好了,在排第 k+1個元素時,將其插入到前面已排好的 k 個元素中,使得插入后得到的 k+1 個元素組成的序列仍按值有序。

堆排序 O(n log n)

希爾排序 O(n log2 n)

基本過程描述如下:

① 把序列按照某個增量(gap)分成幾個子序列,對這幾個子序列進行插入排序。

② 不斷縮小增量,擴大每個子序列的元素數量,并對每個子序列進行插入排序。

③ 當增量為 1 時,子序列就是整個序列,而此時序列已經基本有序了,因此只需做少量的比較和移動就可以完成對整個序列的排序

出發點:插入排序在元素基本有序的情況下,效率很高。

gap:初始值設為 n/2,然后不斷減半。

圖書館排序 O(n log n)

冒泡排序 O(n2)

? 走訪需要排序的序列,比較相鄰的兩個元素,如果他們的順序錯誤就把他們交換過來。

? 不斷重復上述過程,直到沒有元素需要交換

具體過程:

? 將第 1 個和第 2 個元素進行比較,如果前者大于后者,則交換兩者 的位置,否則位置不變;然后將第 2 個元素與第 3 個元素進行比較, 如果前者大于后者,則交換兩者的位置,否則位置不變;依此類推, 直到最后兩個元素比較完畢為止。這就是第一輪冒泡過程,這個過程 結束后,最大的元素就“浮”到了最后一個位置上。

? 對前面 n-1 個元素進行第二輪冒泡排序,結束后,這 n-1 個元素中 的最大值就被安放在了第 n-1個位置上。

……執行n-1輪

優化:

簡單優化:

如果在某輪冒泡過程中沒有發生元素交換,這說明整個序列已經排好序了,這時就不用再進行后面的冒泡過程,可以直接結束程序

進一步優化:

假設有 100 個數組成的數組,僅前面10個無序,后面90個都已排好序且都大于前面10個數字,那么在第一輪冒泡過程后,最后發生交換的位置必定小于10,且這個位置之后的數據必定已經有序了,記錄下這位置,第二輪遍歷是只要到這個位置就可以了。記錄每輪遍歷最后發生交換的位置,下次遍歷只需到此位置為止

基數排序 O(n · k)

先排個位,再排十位,再排百味(30次)

快速排序 O(n log n)【分治】 不穩定

快速排序采用的是分而治之思想:將原問題分解為若干個規模更小但結構與原問題相似的子問題,然后遞歸求解這些子問題,最后將這些子問題的解組合為原問題的解

1.以第一個元素為基準書,使得基準書左邊只有比他小的,右邊只有比他大的

2.然后對基準書兩邊的數組分別進行操作1

分治:分成相同的子問題,用遞歸求解;子問題相互獨立

dp:子問題不一定相同,具有最優子結構;子問題相互依賴

桶排序 O(n + k)

計數排序 O(n + k)

鴿巢排序 O(n + D)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/41476.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/41476.shtml
英文地址,請注明出處:http://en.pswp.cn/web/41476.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Mysql-常用函數及其用法總結

1、字符串函數 測試用例如下: 1.1 CONCAT() 將多個字符串連接成一個字符串。 SELECT CONCAT(first_name, , last_name) AS full_name FROM users; -- 期望結果:John Doe, Jane Smith, Michael Johnson 1.2 SUBSTRING() 提取子字符串 SELECT SUBSTR…

STM32-PWR和WDG看門狗

本內容基于江協科技STM32視頻學習之后整理而得。 文章目錄 1. PWR1.1 PWR簡介1.2 電源框圖1.3 上電復位和掉電復位1.4 可編程電壓監測器1.5 低功耗模式1.6 模式選擇1.7 睡眠模式1.8 停止模式1.9 待機模式1.10 庫函數 2. WDG看門狗2.1 WDG簡介2.2 IWDG框圖2.3 IWDG鍵寄存器2.4 …

13 學習總結:指針 · 其一

目錄 一、內存和地址 (一)內存 (二)內存單元 (三)地址 (四)拓展:CPU與內存的聯系 二、指針變量和地址 (一)創建變量的本質 (二…

Ansible常用模塊

華子目錄 Ansible四個命令模塊1.組成2.特點3.區別3.1command、shell模塊3.2raw模塊 4.command模塊4.1參數表4.2free_form參數 5.shell模塊5.1作用5.2例如 6.script模塊6.1示例 7.raw模塊7.1參數7.2示例 文件操作模塊1.file模塊1.1參數1.2示例 2.copy模塊2.1參數 Ansible四個命令…

用4個方法檢查家里的燈是否傷孩子的眼睛

為什么小孩子帶眼鏡的越來越多?      現在的孩子都在樓上玩手機看電視,當然它就傷眼睛了      除了這些電子產品傷眼睛,還有一處隱形的因素被忽略了      你主要看4個標準      1,你看看燈的照度,有些…

ASRock Creator系列GPU:為AI推理及多GPU系統打造,采用16針電源接口的Radeon RX 7900系列顯卡

ASRock 正在籌備推出專為人工智能推理和多GPU系統設計的AMD GPU——Creator系列顯卡。這一系列顯卡采用雙槽位、吹風式設計,并配備16針電源連接器,首發產品包括基于Navi 31架構的AMD Radeon RX 7900XTX和RX 7900 XT型號。這些原屬于WS系列的顯卡最初在20…

2024年華為OD機試真題-小朋友來自多少小區-C++-OD統一考試(C卷D卷)

2024年OD統一考試(D卷)完整題庫:華為OD機試2024年最新題庫(Python、JAVA、C++合集) 題目描述: 幼兒園組織活動,老師布置了一個任務:每個小朋友去了解與自己同一個小區的小朋友還有幾個。我們將這些數量匯總到數組garden中。 請根據這些小朋友給出的信息,計算班級小朋…

機器學習與現代醫療設備的結合:革新醫療健康的未來

🎬 鴿芷咕:個人主頁 🔥 個人專欄: 《C干貨基地》《粉絲福利》 ??生活的理想,就是為了理想的生活! 引言 隨著技術的不斷進步,機器學習(Machine Learning, ML)在現代醫療設備中的應用正在改變著…

python基礎語法 006 內置函數

1 內置函數 材料參考:內置函數 — Python 3.12.4 文檔 Python 解釋器內置了很多函數和類型,任何時候都能直接使用 內置函數有無返回值,是python自己定義,不能以偏概全說都有返回值 以下為較為常用的內置函數,歡迎補充…

【華為OD題目0008-雙十一】

華為OD題目0008-雙十一 華為OD題目0008-雙十一 華為OD題目0008-雙十一 題目描述 雙十一眾多商品進行打折銷售,小明想購買一些自己心儀的商品, 但由于受購買資金限制,所以他決定從眾多心意商品中購買3件, 而且想盡可能的花完資金&…

什么是CTO?如何成為一名優秀的CTO?

一、什么是CTO? 首席技術官(CTO)是一位負責領導和管理企業技術戰略的高級職務。CTO的主要職責包括規劃技術戰略、監督研發活動、領導技術團隊等。 二、CTO的主要職責 首席技術官,即CTO,是企業中負責技術和研發的高級管…

Redies基礎篇(一)

Redis 是一個高性能的key-value數據庫。Redies支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)和zset(有序集合)。這些數據類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的&#xff…

【ETABS】【RHINO】案例:Swallow to ETABS

文章目錄 01. Swallow Overview總覽1 LOAD:Defination of LoadCase、Response Combo2 SectionArea Section and Area Load(面截面定義與指定,面荷載指定)Frame Section with rebarattr and linear load(帶鋼筋屬性框架…

下載,連接mysql數據庫驅動(最詳細)

前言 本篇博客,我講講如何連接數據庫?我使用mysql數據庫舉例。 目錄 下載對應的數據庫jar 包 百度網盤 存有8.4.0版本壓縮包:鏈接:https://pan.baidu.com/s/13uZtXRmuewHRbXaaCU0Xsw?pwduipy 提取碼:uipy 復制這…

STM32-TIM定時器

本內容基于江協科技STM32視頻內容,整理而得。 文章目錄 1. TIM1.1 TIM定時器1.2 定時器類型1.3 基本定時器1.4 通用定時器1.4 高級定時器1.5 定時中斷基本結構1.6 預分頻器時序1.7 計數器時序1.8 計數器無預裝時序1.9 計數器有預裝時序1.10 RCC時鐘樹 2. TIM庫函數…

前端面試題11(淺談JavaScript深拷貝與淺拷貝)

在JavaScript中,數據的復制可以分為淺拷貝(Shallow Copy)和深拷貝(Deep Copy)。這兩種拷貝方式主要區別在于如何處理對象中的嵌套對象。下面我會詳細解釋這兩者的概念、區別,并提供相應的實現代碼。 淺拷貝…

【機器學習實戰】Datawhale夏令營:Baseline精讀筆記2

# AI夏令營 # Datawhale # 夏令營 在原有的Baseline上除了交叉驗證,還有一種關鍵的優化方式,即特征工程。 如何優化特征,關系著我們提高模型預測的精準度。特征工程往往是對問題的領域有深入了解的人員能夠做好的部分,因為我們要…

鏈式二叉樹oj題

1.輸入k ,找第k層節點個數 int TreeKlevel(BTNode*root,int k) {if (root NULL) {return 0;}if (k 1) {return 1;}return TreeKlevel(root->left, k - 1)TreeKlevel(root->right, k - 1); } 在這里我們要確定遞歸子問題,第一個就是NULL時返回&…

26_嵌入式系統網絡接口

以太網接口基本原理 IEEE802標準 局域網標準協議工作在物理層和數據鏈路層,其將數據鏈路層又劃分為兩層,從下到上分別為介質訪問控制子層(不同的MAC子層,與具體接入的傳輸介質相關),邏輯鏈路控制子層(統一的LLC子層,為上層提供統…

非同步升壓轉換器,效率95%你信嗎?ETA1611輸出電流2A, 22V DCDC

前言: 截止24年7月7日某創報價:500: ¥0.7856 / 個 建議使用前同時了解下方器件。 2毛錢的SOT23-5封裝28V、1.5A、1.2MHz DCDC轉換器用于LCD偏置電源和白光LED驅動等MT3540升壓芯片 描述 ETA1611 SOT23-6封裝 絲印GVYW&#xff0…