深海中的STL nth element

2022-04-30 15:21:12 字數 561 閱讀 8225

如果讓你求區間第\(k\)大,你會怎麼做呢?

主席樹?確實是個不錯的選擇(不過像我這種垃圾還是乖乖打暴力吧)

在c++的stl庫中,提供了nth_element這樣乙個函式

它的用法是nth_element(a+l,a+k,a+r)

這樣它會使a這個陣列中區間\([l,r)\)內的第\(k\)小的元素處在第\(k\)個位置上(相對位置)

但是它並不保證其他元素有序!

不過根據網友的實驗,貌似在vs上是有序的,不過在dev中是無序的

時間複雜度:\(o(n)\)

#include#includeusing namespace std;

int main() ;

nth_element(a + 1, a + 4, a + 8);

for (int i = 1; i <= 8; i++) printf("%d ", a[i]); printf("\n");

return 0;

}

輸出結果

st語言 陣列的常用方法 ST語言

st 語言學習心得 一 工程的簡介和建立工程 1.工程檔案的結 工程檔案的字尾名為 pro,在新工程中建立的第乙個程式結構單元 program organization unit 將被自動命名為 plc prg 這個程式結構單元就類似於 c語言中的主程式。在 plc prg 中可以呼叫各種函式及功能...

ST表的學習

st表的優勢在於可以把查詢乙個區間的最值的時間複雜度降為o n o n o n 假設有乙個陣列裡有10000個元素,第i個元素記為ar i 我們用f i j 表示從第i個元素開始,向右i 2j 1的 這些元素的最大值。有f i j max f i j 1 f i 2j 1 j 1 這其實是把區間 i...

st語言 陣列的常用方法 ST語言入門基礎

一 結構化文字 st 語言 結構化文字 structured text 簡稱 st 語言,是 iec61131 3 所規定的 plc 程式語言之一,用於工業控制的高階語言。由於其編寫方式與一般計算機語言相似,多用於較為複雜的控制 場合和複雜的控制演算法中。1 特點 程式語言採用高度簡化的表達形式,使...