第K個數 快速排序

2021-08-15 16:00:56 字數 1391 閱讀 9368

題目描述 description

給定乙個長度為n(0輸入描述 input description

第一行為2個數n,k(含義如上題)

第二行為n個數,表示這個序列

輸出描述 output description

如果m為質數則

第一行為'yes'(沒有引號)

第二行為這個數m

否則 第一行為'no'

第二行為這個數m

樣例輸入 sample input

5 2

1 2 3 4 5

樣例輸出 sample output

yes

2

資料範圍及提示 data size & hint

20%資料滿足0這題考察的還是排序和質數判斷,唯一要注意的是此題需要排序的數目比較多,用一般的排序方法可能會超時,所以用的快速排序,還有一點宣告陣列時要用long long int型別

#include #define m 10000

//宣告函式

void sort(long long int *num,int begin,int end);

void swap(long long int *a,long long int *b);

int judge(long long int num);

int main(void)

; long long int n=0,k=0;

long long int i=0,tmp=0;

scanf("%lld %lld",&n,&k);

for(i=0;isort(num,0,n-1);

tmp = num[n-k]-num[k-1];

if(judge(tmp)) puts("yes");

else puts("no");

printf("%lld\n",tmp);

return 0;

}void swap(long long int *a,long long int *b)

//判斷num是否為質數,注意遍歷的i也應該為long long int型

int judge(long long int num)

if(i*i==num) return 0;

return 1;

}//快速排序

void sort(long long int *num,int begin,int end)

else i++;

} if(num[begin]<=num[i])

swap(num+begin,num+i);

sort(num,begin,i);

sort(num,j,end);

}}

快速選擇第k個數

給定乙個長度為n的整數數列,以及乙個整數k,請用快速選擇演算法求出數列從小到大排序後的第k個數。輸入格式 第一行包含兩個整數 n 和 k。第二行包含 n 個整數 所有整數均在1 109範圍內 表示整數數列。輸出格式 輸出乙個整數,表示數列的第k小數。資料範圍 1 n 100000,1 k n 輸入樣...

快速冪 序列的第k個數

時間限制 1 sec 記憶體限制 128 mb 提交 24 解決 5 提交 狀態 討論版 命題人 quanxing 給你乙個序列的前3項,要麼等差數列要麼等比序列,你能求出第k項的值嗎。如果過大對200907取模 輸入t 組測試資料 每組測試資料有abc k 輸出第k項 2 1 2 3 5 1 2 ...

快速冪 序列的第k個數

bsny 在學等差數列和等比數列,當已知前三項時,就可以知道是等差數列還是等比數列。現在給你序列的前三項,這個序列要麼是等差序列,要麼是等比序列,你能求出第 k 項的值嗎。如果第 k 項的值太大,對 200907 取模。第一行乙個整數 t,表示有 t 組測試資料 對於每組測試資料,輸入前三項 a,b...