執行時間為θ(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...