concept:
順序統計量(order statistic):乙個集合中按照大小順序排列的位數。
tips:
1、對集合進行快速排序。
2、將要求的第k位順序統計量和第一步得到的pivot在陣列中的位置相比較,如果相等,則pivot就是第k位的值,否則根據比較結果進行遞迴。
首先,快速排序partition**:
partition
1/*2然後,得到第k個順序統計量值的**: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 }
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
1ps:今天寫了個select_n的迭代版本,**如下:int main()
2
selection_n
1int 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...