資料結構之排序演算法(三)

2021-07-29 08:16:07 字數 866 閱讀 2565

選擇類排序法,是每一趟遍歷從待排序記錄中選出關鍵字最小的記錄,放在已排好序的序列最後直至排完。常用的選擇排序有兩種,分別是直接選擇排序和堆排序

1、直接選擇排序

基本原理:直接選擇排序,在第 i 趟選擇排序是指通過 n-i 次關鍵字的比較,從n-i+1 個記錄中選出關鍵字最小的記錄,並和第 i 個記錄交換,直到排序完

演算法分析:無論序列初始狀態如何,在第 i 趟排序中選出最小關鍵字的記錄,需要做 n-i 次比較,所以總的比較次數為 o(n2)。直接選擇排序是就地排序,是不穩定的

void selectsort(int a, int n) 

}}

2、堆排序

基本原理:堆排序是指在排序過程中,將向量中儲存的資料看成一顆完全二叉樹,利用完全二叉樹中雙親節點和孩子節點之間的內在關係,選擇關鍵字最小的元素

演算法分析:此演算法的關鍵是構建堆,可以反覆利用篩選的方式,自底向上把所有的子樹調整為堆。首先建立初堆,並輸出堆頂元素。調整剩餘的記錄,在重新生成堆,重複此操作

相關**

/**  heap sort   **/

// build heap

void createheap(int a, int index, int n)

if (a[index] < a[j]) else

// compare left and right child,if heap does not be broken,then no necessary to adjust

break;

}}void heapsort(int a,int n)

}

資料結構之排序演算法

1.插入排序 直接插入排序 include void insertsort int unsort int length unsort j temp int main void insertsort num,7 int i 0 for i i 7 i return 0 折半插入排序 include v...

資料結構之排序演算法

學過好久的東西,感覺都忘記的差不多了,雖然可能日常寫 的過程之中也可能寫過一些演算法,但是從來都沒有規整,最近忙裡偷閒,寫點關於排序的演算法,當然好多人都寫過一些很不錯的演算法blog,我寫一下,只是方便自己日後檢視,當然也給有需要的朋友一些參考,歡迎指正 排序演算法有 氣泡排序,選擇排序,插入排序...

資料結構之排序演算法

1 直接插入排序 將乙個記錄插入到已經排好序的有序表中,只有當排序結束時每個元素才能進入到正確的位置,複雜度為o n2 優點 演算法簡單 易行,當待排序記錄數量較少時,該演算法非常有效 缺點 資料規模較大時,效率比較低。演算法insertsort r,n insertsort1.插入排序 for j...