国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

求第k大

2019-11-08 20:22:51
字體:
來源:轉載
供稿:網友

一個數組中求第k大的數。 4 1 1 3 9 2 求第4大的數。 時間復雜度

//4 1 1 3 9 2#include<iostream>#include<cstdio>using namespace std;int a[1001];int n,k;void qst(int l,int r){ if(l>r) return; int tmp=a[l],i=l+1,j=l+1;//a[1] a[2] a[3] a[4] while(i<=r) { if(a[i]>tmp) i++; else swap(a[i],a[j]),i++,j++;//<=交換 } j--; swap(a[l],a[j]); if(j==k) cout<<a[k]<<endl; qst(l,j-1); qst(j+1,r); }int main(){ scanf("%d%d",&n,&k); for(int i=1;i<=n;i++) scanf("%d",&a[i]); qst(1,n);// for(int i=1;i<=n;i++)// cout<<a[i]<<" ";}

雙路快排,一直覺得這個比較難寫

#include<iostream>#include<cstdio>using namespace std;int n,a[1001];void qst(int l,int r){ if(l>r) return; int tmp=a[l]; int i=l+1,j=r; while(1) { while(i<=r && a[i]<=tmp) i++; while(j>=l+1 && a[j]>=tmp) j--; if(i>j) break; swap(a[i],a[j]); i++; j--; } swap(a[l],a[j]); qst(l,j-1); qst(j+1,r);}int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); qst(1,n); for(int i=1;i<=n;i++) cout<<a[i]<<" ";}

三路快排,值得一學的是它的邊界處理

#include<iostream>#include<cstdio>using namespace std;int n,a[1001];void qst(int l,int r){ if(l>r) return; int tmp=a[l]; int lt=l;//[l+1,lt]< 空 int gt=r+1;//[gt,r]>v 空 int i=l+1;//[lt+1,i)==v 空 while(i<gt) { if(a[i]<tmp){ swap(a[i],a[lt+1]),lt++,i++; } else if(a[i]>tmp) { swap(a[i],a[gt-1]),gt--; } else{ i++; } } swap(a[l],a[lt]); qst(l,lt-1); qst(gt,r);}int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); qst(1,n); for(int i=1;i<=n;i++) cout<<a[i]<<" ";}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 甘南县| 静乐县| 沙湾县| 延津县| 陇西县| 成都市| 江川县| 普宁市| 庄河市| 高要市| 鹿泉市| 成都市| 那坡县| 铜川市| 景宁| 黔南| 吉木萨尔县| 南安市| 潍坊市| 金坛市| 深泽县| 上饶市| 太谷县| 玛多县| 汝州市| 石阡县| 张北县| 井陉县| 泽库县| 当雄县| 富宁县| 临夏县| 河源市| 团风县| 兴化市| 远安县| 江门市| 云和县| 澜沧| 鹤山市| 平利县|