Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:原来最好的算法,就是使用分治思想的经典第k元素算法In Reply To:Re:原来最好的算法,就是使用分治思想的经典第k元素算法 Posted by:accept123 at 2009-12-14 23:43:10 对于啊,我就是这个原因超时了,附代码…… #include<stdio.h> #include<stdlib.h> #define MAX 100005 int partition(int *a ,int p,int r) { int i,t; i=p-1; for(int j=p;j<=r-1;j++) { if(a[j]<a[r]) { i++; t=a[i]; a[i]=a[j]; a[j]=t; } } t=a[i+1]; a[i+1]=a[r]; a[r]=t; return i+1; } int qsort(int *a,int p,int r,int k) { int t; if(p<=r) { int q=partition(a,p,r); if(k==q-p+1)return a[q]; else if(k<q-p+1) { t=qsort(a,p,q-1,k); return t; } else { t=qsort(a,q+1,r,k-(q-p+1)); return t; } } return -1; } int main() { int n,i,a[MAX],b[MAX],k,m,zz,z; scanf("%d%d",&n,&m); for(i=1;i<=n;i++) scanf("%d",a+i); for(i=0;i<m;i++) { scanf("%d%d%d",&z,&zz,&k); for(int j=z;j<=zz;j++) b[j]=a[j]; printf("%d\n",qsort(b,z,zz,k)); } // for(i=1;i<=n;i++) // printf("%d",a[i]); system("pause"); } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator