MATLAB 演算法排序演算法(如下)。

Mondo 科技 更新 2024-02-27

這次MATLAB演算法的主題是排序演算法(下圖),參考資料和分類方法基本都是網路上第一,比如維基百科、CSDN等。 會附上原理部分,上面也會有**,便於直觀理解,就不多說了。

1.插入排序。

.直接插入:

由於 MATLAB 中的向量長度不確定,因此寫出的 ** 看起來很簡單。 但實際上,插入排序要複雜得多。

由於二進位搜尋在MATLAB的語法中沒有找到使**簡潔的技巧,因此直接被內建的向量操作所取代。

步驟:

1. 將 a[2] 與 a[1] 進行比較,如果 a[2] 較大,則跳到下一步; 如果 a[1] 較大,則將 a[2] 放在 a[1] 之前。

2. 將 a[3] 與 a[2] 進行比較,如果 a[3] 更大,則跳到下一步; 將 a[3] 與 a[1] 進行比較,如果 a[3] 較大,則在 a[1] 和 a[2] 之間插入 a[3]; 如果 a[1] 較大,則將 a[3] 放在 a[1] 之前。

3. 將 a[4] 與 a[3] 進行比較,如果 a[4] 更大,則跳到下一步; 將 a[4] 與 a[2] 進行比較,如果 a[4] 較大,則在 a[2] 和 a[3] 之間插入 a[4]; 如果 a[2] 較大,則將 a[4] 與 a[1] 進行比較,如果 a[4] 較大,則在 a[1] 和 a[2] 之間插入 a[4]; 如果 a[1] 較大,則將 a[4] 放在 a[1] 之前。

在遍歷所有元素之前,排序完成。

例:

陣列 a=[4 2 5 3 1]。

1. 將 4 與 2 進行比較,得到 a=[2 4 5 3 1]。

2. 將 5 與 4 進行比較,得到 a=[2 4 5 3 1]。

3. 比較 3 與 5、3<5、3 與 4、3<4、33 與 2、3>2,得到 a=[2 3 4 5 1]。

4. 比較 1 與 5、1<5、1 與 4、1<4、1 與 3、1<3、1 與 2、1<2,得到 a=[1 2 3 4 5] 完成。

2.山體排序:

Hill Sort 演算法以其設計者 Donald Shell 的名字命名,於 1959 年發布,是 Insert Sort 的更高效、更改進的版本。 它不會一次做乙個。 取而代之的是,初始選擇大步幅(較大增量)間隔比較,使記錄跳到接近其排序位置; 然後增量縮小; 最終增量為1,大大減少了記錄的移動次數,提高了分揀效率。 Hill 排序對增量序列的選擇沒有嚴格的規則。 ”

與合併排序類似:

步驟:

1.取整數 d,將所有模數為 d 的記錄視為乙個組,並在每個組內插入和排序。

2.d = floor(d 2),按 d 重新組合以對插入物進行排序。

3.如果 d = 1,則重複步驟 2。

其他排序:1.雞尾酒分揀

也就是說,略微變形的氣泡分揀版本,效率更高。 視覺化將非常有趣。

步驟:

已知陣列 A 有 n 個元素。

1. 比較 a(1) 和 a(2),如果 a(1) > a(2),則將兩者互換。 (將較大的移到後面)。

2、至a(2)、a(3); a(3)、a(4)..a(n-1) 和 a(n) 來比較整個未排序的陣列。 (將最大的數字排在最後)。

3. 比較 a(n-1) 和 a(n-2),如果 a(n-1)4, a(n-2) 和 a(n-3); a(n-3)、a(n-4)..a(2) 和 a(1) 來比較整個未排序的陣列。 (將最小的數字排在最前面)。

5. 對刪除有序數字的陣列重複該操作。 直到排序完成。

例:

陣列 a=[4 2 5 7 3 1 6]。

做一次:a=[2 4 5 3 1 6 7]。

做一次:a=[1 2 4 5 3 6 7]。

重複:a=[1 2 4 3 5 6 7]。

重複:a=[1 2 3 4 5 6 7]。

2.猴子分揀

根據無限猴子定理,現在中文維基百科的**被縮短並變得有序(xyx)。

步驟:

1.重新隨機化原始陣列。

2.如果陣列未按公升序或降序排序,請重複 1。

相關問題答案

    快速排序 高效的就地排序演算法

    快速排序是一種常用的排序演算法,它採用了分而治之的思想,與合併排序不同,快速排序是原位排序的,即不需要額外的空間來儲存中間結果。在本文中,我們將了解快速排序的工作原理 工作原理以及它在對子陣列進行排序時的作用。快速排序的演算法步驟如下 哨兵分部 首先,我們需要選擇乙個基準編號作為哨兵。通常,我們選擇...

    冒泡與選擇是排序演算法中的雙重技巧

    答 氣泡排序和選擇排序在排序邏輯 時間複雜度和空間複雜度方面存在顯著差異。一 引言。在電腦科學領域,排序演算法是一類非常重要的演算法。無論您是使用資料庫 搜尋引擎還是資料分析,排序都是一項基本操作。在眾多的排序演算法中,氣泡排序和選擇排序無疑是最基本的兩種。本文將詳細解釋這兩種排序演算法的原理以及它...

    談談各種排序演算法中使用的數學知識

    排序演算法是電腦科學中的乙個重要領域,用於按特定順序排列一組資料。不同的排序演算法可能使用不同的數學知識,但以下是一些常見的排序演算法及其相關的數學概念 迴圈不變性 氣泡排序的工作原理是多次交換相鄰元素的位置,在每個迴圈後,最大的元素被 冒泡 到序列的末尾。迴圈不變性是指在每個迴圈的開頭保持乙個條件...

    谷歌熊貓演算法揭曉

    年,谷歌發布了乙個重要的演算法更新,即 熊貓演算法 該演算法的主要目的是解決搜尋引擎中的一些內容質量問題,例如每頁內容太少,內容與網頁標題 關鍵字等元素的相關性低,原創性和建設性內容少。Panda 演算法的工作原理是為每個網頁分配乙個所謂的質量得分,該得分用作排名因素。此質量得分主要受內容質量 原創...

    在AI時代,你如何看待“演算法利維坦”?

    自年ChatGPT浪潮來襲以來,一直火爆,呈現出蓬勃發展的態勢。AI 家居 醫療 教育 金融 公益 農業 藝術。AI真的走進了生活的方方面面,我們似乎已經進入了AI的時代,這是不可阻擋的。擁有如此高水平的人工智慧,我不禁感受到了它背後的演算法的力量。當技術發展得太快時,會帶來很多思考,例如便利 焦慮...