幾種常用的排序(持續更)

2021-08-22 10:21:24 字數 1397 閱讀 2611

arr =               待排陣列

bucket=   空桶

0  1  2  3  4  5  6  7  8  9   桶編號(陣列 bucket 的角標)

#include int main(); 

int bucket[10]=; //初始化陣列,空桶

for(i=0; i<5; i++)

for(int i=0; i<10; i++)

} return 0;

}

氣泡排序在一組需要排序的陣列中,對兩兩資料順序與要求順序相反時,交換資料,使大的資料往後移,每趟排序將最大的數放在最後的位置上,如下: 

}選擇排序是最簡單的一種基於o(n2)時間複雜度的排序演算法,基本思想是從i=0位置開始到i=n-1每次通過內迴圈找出i位置到n-1位置的最小(大)值。 

for(int i=0; i如實現所示,簡單的選擇排序複雜度固定為o(n2),每次內迴圈找出沒有排序數列中的最小值,然後跟當前資料進行交換。由於選擇排序通過查詢最值的方式排序,迴圈次數幾乎是固定的,一種優化方式是每次迴圈同時查詢最大值和最小值可以是迴圈次數減少為(n/2),只是在迴圈中新增了記錄最大值的操作,原理一樣,本文不再對該方法進行實現。

希爾排序的基本思想是先取乙個小於n的整數d1作為第乙個增量,把全部元素分組。所有距離為d1的倍數的記錄放在同乙個組中。先在各組內進行直接插入排序;然後,取第二個增量d2 < d1重複上述的分組和排序,直至所取的增量 =1( < …< d2 < d1),即所有記錄放在同一組中進行直接插入排序為止,希爾排序主要是根據插入排序的以下兩種性質對插入排序進行改進: 

1)插入排序在對幾乎已經排好序的資料操作時,效率高,即可以達到線性排序的效率。

2)但插入排序一般來說是低效的,因為插入排序每次只能將資料移動一位

排序過程如下:

sublime常用技巧(持續更

1 自動縮排 設定 preference key bindings user 編輯設定文件,輸入 應用 選擇需要縮排的 後ctrl q即可 2 設定瀏覽器開啟 快捷鍵 選單欄preferences key bindings user 開啟 default windows sublime keymap...

docker 常用操作持續更

docker日誌檢視 docker logs f tail 100 containerid docker ps 檢視活動的容器 a檢視所有容器 docker start stop restart containerid 啟動,停止,重啟docker容器 docker rm rmi 刪除容器 映象 d...

幾種常用的排序演算法

介紹 快速排序是由東尼 霍爾所發展的一種排序演算法。在平均狀況下,排序 n 個專案要 n log n 次比較。在最壞狀況下則需要 n 2 次比較,但這種狀況並不常見。事實上,快速排序通常明顯比其他 n log n 演算法更快,因為它的內部迴圈 inner loop 可以在大部分的架構上很有效率地被實...