第X個大的數(快排)

2021-08-18 21:08:47 字數 794 閱讀 3738

time limit: 1000 ms memory limit: 65536 kib

submit

statistic

discuss

problem description

x最近愛上了區間查詢問題,給出n (n <= 100000) 個數,然後進行m (m <= 5) 次詢問,每次詢問時,輸入乙個數x (1 <= x <= n),輸出n個數中第x大的數。

input

多組輸入。

每組首先輸入乙個整數n,代表有n個數,下面一行包含n個整數,用空格隔開。然後為乙個整數m,代表有m次詢問,下面的m行,每行乙個整數x。

output

輸出n個數中第x大的數。

sample input

4

1 2 2 341234

sample output

322

1

hint

source

#includeint a[100000];

void sort(int l,int r){

int x1=a[l];

int i=l,j=r;

while(i=a[j])

j--;

a[i]=a[j];

while(i快速排序如圖所示:

快排擴充套件 第k小的數

使用快排中的partition方法,可以很快找到乙個無序序列中的第k小的數。思想 對於乙個陣列a 0.n 1 分段成a 0.st 1 a s a st 1.n 1 分組後,a 0.st 1 裡面的元素都小於等於a st a st 1.n 1 裡面的元素都大於等於a st 所以,如果 st k 1,那...

尋找第K大的數(快排思想)

使用快排思想找第k大的數,演算法複雜度o n 1.以陣列a的第0位a 0 為參考基準base,將陣列劃分為兩個部分 如果找第k大的數,則將大於base的數往前挪,將小於base的數往後挪。如果找第k小的數,則與此相反。劃分過程與快排相同,使用兩個指標i和j分別指向陣列的首尾,根據指標所指元素與基準b...

快排的思想求第K小的數

描述輸入n 個數,m 次查詢。每次查詢給出乙個數x。要求 每次查詢輸出前 x個數中第 i小的數。i為第 i次查詢 你可以假設 m n xi xi 1 xi 2 xm xm n 輸入 line0 t line1 n,m line2 linen 1 num1,numn linen 2 linen 2 m...