nth_element()
例子:陣列a在第1-n位置有元素,現求第k大的數
nth_element(a+1,a+k,a+n+1,cmp)
注意,**中的cmp可以刪去,如果不使用cmp函式,預設是「<」
原理:在當前區間[l,r]上,找乙個基準位置mid
通過線性的掃瞄交換,類似快排的一部分,
使得[l,mid)的元素都比mid小,(mid,r]的元素都比mid大
此時mid上的元素就是第mid小的
然後判斷k在哪半邊,繼續遞迴處理
所以這樣就達到了期望的o(n
)複雜度
**:
#includeusing namespace std;
int a[5000006];
inline int read()
while(ch >= '0' && ch <= '9')
return x * f;
}int main()
}
C 之STL庫簡單介紹
1.sort 可以自己定義新的結構體陣列排序,sort第三個引數可以設定為根據哪個值排序 int a int n sizeof a sizeof int sort a,a n for int i 0 i2.string string s 46237879426 排序 sort s.begin s.e...
C 學習筆記之 STL 庫 queue
queue 佇列是一種容器介面卡,專門用來滿足先進先出的操作,也就是元素在容器的一端插入並從另一端提取。優先順序佇列是一種容器介面卡,根據一些嚴格的弱排序標準,專門設計使其第乙個元素始終是它包含的最值元素。其本質上就是乙個大頂堆或者小頂堆,會在需要時自動呼叫函式 make heap,push hea...
C 標準模板庫(STL)之vector
vector即長度可變的陣列 標頭檔案宣告 include using namespace std 1.定義 vector int v vectorint age 兩個 之間需加空格,不然會被誤以為是移位操作 vector int vi 100 vector陣列,vi 0 vi 99 每乙個都是乙個...