NOJ 1574 求第k小數

2021-10-24 20:05:31 字數 619 閱讀 6102

時限:1000ms 記憶體限制:10000k  總時限:3000ms

描述求第k小數

輸入先輸入乙個小於10000的正整數n,再輸入n個整數,最後輸入乙個小於等於n的正整數k,

輸出輸出其中第k小的數。

輸入樣例

52 98 34512 8492 1000

2輸出樣例

提示**

/*

思路:可以採用二分法思想,先讓乙個數順序歸位。

如果要找的數的下標比這個數的下標大,則從這個數的左邊找

如果要找的數的下標比這個數小,則在這個數左邊找

依次遞迴

*/ #includeusing namespace std;

int a[10005],n,k;

int findk(int left,int right)

a[i] = a[j];

while(i < j&&a[i] <= temp)

a[j] = a[i];

} a[i] = temp;

if(i == k)else if(i < k)else

}int main()

cin>>k;

cout<}

求第k小數

求第k小數,無非就是考查排序,請參考我最新的博文吧求第k小數 直接使用priority queue,在網上看到許多使用快排來求第k小數都是認為第k小就是排好序陣列中第k個元素,但是如果陣列中有相同的元素呢,例如 1,2,2,2,3,5 認為第三小是3還是2呢?我刷題時遇到的是認為是3。沒有想到什麼好...

關於求各種第K小數的總結

大前提 題目敘述中若未指定n,m,q三個變數,則預設n表示序列長度,m表示總操作次數 包括修改和查詢 q表示詢問總次數.給定乙個長度為n的整數序列,求序列中第k小的數字.時間複雜度 多次詢問o nlogn 單次詢問o n 空間複雜度 o n 可以採用諸多複雜度為o nlogn 的排序方法,如快速排序...

牛客 第k小數 線性尋找第 k 小數

題目大意 給出長度為 n 的數列 a 要求找到第 k 小的數 題目分析 因為資料給的足夠大,所以約束就是必須線性完成操作,stl 中的 nth element 函式可以完美實現操作,算是學到了一波,格式 nth element a.begin a.begin k a.end 那麼 a k 就是第 k...