《演算法導論》第9章 順序統計學 2 隨機選擇

2021-08-26 17:29:55 字數 576 閱讀 9561

randomized_select使用劃分方法randomized_partition(),返回主元位置q(第k小元素)。

要查詢的是第 i 小元素,若恰好等於k,那麼直接返回。

如果 i < k,則繼續在[p, q - 1]中搜尋第 i 小元素。

如果 i > k,則繼續在[q + 1, r]中搜尋第 i - k 小元素。

int randomized_select(int a, int p, int r, int i)

int main(void)

; int ret = randomized_select(a, 0, 6, 2);

printf("%d\n", ret);

}

例如,randomized_partition執行後陣列a為:2, 4, 7, 8, 11, 9, 13。

元素8是主元,q = 3,即8是第4小的元素。要查詢的是第 i = 2 小元素。

則繼續在[2, 4, 7]中查詢第2小元素。

假如要查詢的是第6小元素,則在[11, 9, 13]查詢第2(6 - 4)小元素,即7。

排序和順序統計學(演算法導論)

1.堆排序 堆資料結構是一種陣列物件,它可以被視為一顆完全二叉樹。存放時利用了二叉樹,父親節點序號 i 子節點序號 2 i,2 i 1 的性質 堆的建立,調整,輸出例項如下 include include includeusing namespace std root從data 1 開始存起 我想到...

演算法導論之排序和順序統計學

排序 對n個數的序列重排過程。待排序的數,一般是選擇記錄中資料集的關鍵字key作為排序的值,而資料集中其他資料 稱為 衛星資料 以key為中心移動。實際上,對於排序過程中,key的移動和交換,衛星資料並不定跟著,只要記錄的指標隨key交換即可,將資料移動量減小到最小。關鍵字和衛星資料所構成的資料集,...

演算法導論 第9章

第i個順序統計量 在乙個由n個元素組成的集合中,第i個順序統計量 order statistic 是該集合中第i小的元素。最小值是第1個順序統計量 i 1 最大值是第n個順序統計量 i n 中位數 乙個中位數 median 是它所在集合的 中點元素 當n為奇數時,i n 1 2,當n為偶數是,中位數...