常用排序演算法

2021-08-14 03:36:44 字數 1735 閱讀 1366

資料排序開發中經常使用到的,而資料排除則需應用到排序演算法,常用的排序演算法不外乎就幾類,不同的排序演算法,其效能效率和應用範圍都不同。對於一般小數量的排序,任選一排序演算法即可。常用的排序演算法有:

氣泡排序、選擇排序、插入排序、快速排序、堆排序、歸併排序、希爾排序、基數排序排序

平均時間複雜度

最壞時間複雜度

最好時間複雜度

空間複雜度

穩定性複雜性

氣泡排序

o(n2)o(n2)

o(n2)o(n2)

o(n)o(n)

o(1)o(1)

穩定簡單

選擇排序

o(n2)o(n2)

o(n2)o(n2)

o(n)o(n)

o(1)o(1)

不穩定簡單

插入排序

o(n2)o(n2)

o(n2)o(n2)

o(n)o(n)

o(1)o(1)

穩定簡單

快速排序

o(nlog2n)o(nlog2n)

o(n2)o(n2)

o(nlog2n)o(nlog2n)

o(nlog2n)o(nlog2n)

不穩定較複雜

堆排序o(nlog2n)o(nlog2n)

o(nlog2n)o(nlog2n)

o(nlog2n)o(nlog2n)

o(1)o(1)

不穩定較複雜

歸併排序

o(nlog2n)o(nlog2n)

o(nlog2n)o(nlog2n)

o(nlog2n)o(nlog2n)

o(n)o(n)

穩定較複雜

希爾排序

o(nlog2n)o(nlog2n)

o(n2)o(n2)

o(n)o(n)

o(1)o(1)

不穩定較複雜

基數排序

o(d(n+r))o(d(n+r))

o(d(n+r))o(d(n+r))

o(d(n+r))o(d(n+r))

o(n+r)o(n+r)

穩定較複雜

1.氣泡排序

氣泡排序(bubble sort),是一種電腦科學領域的較簡單的排序演算法。排序過程中,因為越大(小)的元素會經由交換慢慢「浮」到數列的頂端,因此稱作「氣泡排序」。

void bubble_sort(int a, int n)

}}

2.選擇排序

選擇排序(selection sort)是一種簡單直觀的排序演算法。它的工作原理是每一次從待排序的資料元素中選出最小(或最大)的乙個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。

void select_sort(int a,int n)

}if(min != i)

}}

3.插入排序

插入排序(insertion sort)的基本操作就是將乙個資料插入到已經排序的有序資料中,從而得到乙個新的、個數加一的有序資料。演算法適用於少量資料的排序,時間複雜度為o(n^2)。是穩定的排序方法。

void insert_sort(int *a,unsigned int n)

*(a+j)=temp;

}}

常用排序演算法

筆者最近學習演算法,學了很久也只弄懂了幾個排序演算法,在這裡曬一下下,作為以後參考之用。一 為什麼要研究排序問題 許多計算機科學家認為,排序演算法是演算法學習中最基本的問題,原因有以下幾點 l有時候應用程式本身需要對資訊進行排序,如為了準備客戶賬目,銀行需要對支票賬號進行排序 l很多演算法將排序作為...

常用排序演算法

一 簡單排序演算法 由於程式比較簡單,所以沒有加什麼注釋。所有的程式都給出了完整的執行 並在我的vc環境 下執行通過。因為沒有涉及mfc和windows的內容,所以在borland c 的平台上應該也不會有什麼 問題的。在 的後面給出了執行過程示意,希望對理解有幫助。1.冒泡法 這是最原始,也是眾所...

常用排序演算法

排序演算法 最好時間 平均時間 最壞時間 輔助空間 穩定性 直接插入排序 o n o n 2 o n 2 o 1 穩定 希爾排序 o n 1.3 o 1 不穩定 直接選擇排序 o n 2 o n 2 o n 2 o 1 不穩定 堆排序 o n x lbn o n x lbn o n x lbn o ...