常用排序演算法

2021-09-11 07:14:23 字數 1242 閱讀 5895

常用的七大排序演算法如下:

}雖然減少了比較的次數,但時間複雜度仍與直接插入排序相同

希爾排序是一種插入排序演算法,又稱為「縮小增量的排序」,思想是將待排序列分割成若干的字序列,對這些子串行分別進行直接插入排序,當表中元素已經基本有序時,再對全體進行直接插入排序。

(1)當序列已經基本有序時,效率較高

(2)當元素個數較少時,效率較高

步長的設定為:d1=2,d=d/2(向下取整)

void shellsort(int a,int size)

arr[low]=arr[high];

while(low時間複雜度:o(nlog2n)    最壞情況下數列基本有序時,為o(n^2)

空間複雜度:o(log2n) 

排序思想:

每一趟(例如第i趟排序)在後面的待排序元素中選取關鍵字最小的元素,作為有序序列的第i個元素,直到第n-1趟做完,待排序元素只剩下乙個時。

void selectsort(int arr,int n)

while(i<=m&&j<=high) //兩子檔案非空時取其小者輸出到r1[p]上

while(i<=m) //若第1個子檔案非空,則複製剩餘記錄到r1中

while(j<=high) //若第2個子檔案非空,則複製剩餘記錄到r1中

for(k=0,i=low;i<=high;)

}

void mergesort(int r,int low,int high)

{

//用分治法對r[low..high]進行二路歸併排序

int mid;

if(low時間複雜度:o(nlog2n)

空間複雜度:o(n)

排序演算法中不穩定的排序演算法:快速排序,希爾排序,堆排序,簡單選擇排序

時間複雜度可達到nlog2n的:快速排序,堆排序,歸併排序

常用排序演算法

筆者最近學習演算法,學了很久也只弄懂了幾個排序演算法,在這裡曬一下下,作為以後參考之用。一 為什麼要研究排序問題 許多計算機科學家認為,排序演算法是演算法學習中最基本的問題,原因有以下幾點 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 ...