選擇任意順序統計量的問題

2022-07-31 06:09:12 字數 1287 閱讀 4436

concept:

順序統計量(order statistic):乙個集合中按照大小順序排列的位數。

tips:

1、對集合進行快速排序。

2、將要求的第k位順序統計量和第一步得到的pivot在陣列中的位置相比較,如果相等,則pivot就是第k位的值,否則根據比較結果進行遞迴。

首先,快速排序partition**:

partition

1/*2

input:an array,and its number of elements.

3functioning:quick sort this array by arr[0] as pivot

4output:the new position of pivot56

*/7int partition(int* arr,int l,int r)

8

21 arr[left]=pivot;

22 pos=left;

2324

return pos;

25 }

然後,得到第k個順序統計量值的**:

selection_n

1/*2

input:array,its number of elements,and the k-th order statistic

3functioning:make a quick sort first,if the pivot's position equals k,then return the pivot.

4otherwise,recursion depends on the comparison between pivot's position and k.

5output:the k-th order value of this array.6*/

7int select_n(int* arr,int l,int r,int k)

8

最後,測試主程式

main

1

int main()

2

ps:今天寫了個select_n的迭代版本,**如下:

selection_n

1

int select_n(int* arr,int l,int r,int k)

2

13else

14

17 }

18return arr[l];

19 }

順序統計量的選擇

在選擇順序統計量中,期望的時間複雜度是o n 主要是對於給定的陣列,從其中選擇出第k小的值。其與原理 利用了快速排序中的隨機分割區間的函式,將第k小的值分割到乙個區域裡面,相當於把該問題劃分的時候只劃分了乙個子問題,就沒有o lgn 根據快速排序的時間複雜度為o nlgn 可知,其時間複雜度為o n...

第K順序統計量

1.第k順序統計量概念 在乙個由n個元素組成的集合中,第k個順序統計量是該集合中第k小的元素。例如,最小值是第1順序統計量,最大值是第n順序統計量。2.求top k元素與求第k順序統計量不同 第k順序統計量 只求解陣列中的第k大元素,是求解乙個元素。一般使用 快速排序 的思想,將陣列劃分求解。3.第...

順序統計量和中位數 線性時間的選擇演算法

一 求最大最小值 即遍歷一次,然後依次跟當前最大或最小的比較一下,遍歷結束,則選擇結束。源 來自網上 得到最小值 int getmin int ndata,int nlen return nmin 返回最小值 得到最大值 int getmax int ndata,int nlen return nm...