常用排序演算法

2021-07-10 05:37:48 字數 871 閱讀 1952

演算法思想:交換排序思想,即兩兩比較待排序記錄的關鍵字,發現兩個記錄的次序相反時即進行交換,直到沒有反序的記錄為止。

演算法平均時間複雜度:o(n^2)

1、 傳統氣泡排序演算法

void bubble_sort (int r,int n)

if(!exchange) //本趟排序未發生交換,提前終止演算法

return;

}

2、優化的氣泡排序法

void optimizedbubblesort(int r,int n)

}high --;

for (int j = high; j > low ; j--)

}low ++;

if(!exchange) //本趟排序未發生交換,提前終止演算法

return;

print(r,8,i);

}}

演算法思想:分治法的基本思想,即將原問題分解為若干個規模更小但結構與原問題相似的子問題。遞迴地解這些子問題,然後將這些子問題的解組合為原問題的解。

演算法時間複雜度:在平均狀況下,排序n 個專案要ο(n log n)次比較。在最壞狀況下則需要ο(n2)次比較,但這種況並不常見。事實上,快速排序通常明顯比其他ο(n log n) 演演算法更快。

演算法:

void quicksort(int r,int low,int high)  } //quicksort

int partition(int r,int i,int j) //endwhile

r[i]=pivot; //基準記錄已被最後定位

return i;

}

參考**:(

常用排序演算法

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