9 2 第i個順序統計量

2021-05-27 18:47:56 字數 794 閱讀 8579

執行時間為θ(n)

#include #include #include #include using namespace std;

void input(vector& v)

}

int partition(vector&v,int s,int e) //每次都隨機選擇乙個元素,並和最後乙個元素交換

{ srand((unsigned int)time(null));

int p=rand()%(e-s+1)+s;

int temp=v[p];

v[p]=v[e];

v[e]=temp;

int insert_u=s-1;

for(int i=s;i&v,int p,int r,int i)

{ if(p==r)

return v[p];

int q=partition(v,p,r);

int k=q-p+1;

if(i==k) //找到了第i個順序統計量

return v[q];

else if(iv;

input(v);

cin.clear();

cin.sync();

cout<<"input you want to select:";

int i;

cin>>i;

int res;

res=randomselect(v,0,v.size()-1,i);

cout<

第K順序統計量

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

順序統計量 求集合中第i小的元素 收藏

期望複雜度 0 n 最壞複雜度 0 n n 方法 通過呼叫快速排序的子程式 random paration 根據返回的中樞元素單方向的處理集合中資料。中實現遞迴和迭代的random select view plaincopy to clipboardprint?1 include 2 include...

順序統計量的選擇

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