杭电的题我用 希尔排序 +Hibbard增量序列 过不去.代码如下(因为是测试的 所以有点乱)
1 #include//这个直接就跪了 超时/ 2 #include 3 using namespace std; 4 int a[1000011],i,j,m,n,t,d,p,q,tmp; 5 int main() 6 { 7 while(scanf("%d%d",&t,&q)!=EOF) 8 { 9 for(i=0;i 0;d=d/2) // 从n/2开始 一直向下传送 d直到d=112 {13 for(p=d;p =d&&a[i-d]
但是快速排序水过去了.
1 //差点跪,时间是 904 差一点点跪. 这个好像不是 完整的快排 有待补充 2 #include3 #include 4 using namespace std; 5 int a[1000011],i,j,m,n,t,d,p,q,tmp; 6 int main() 7 { 8 while(scanf("%d%d",&t,&q)!=EOF) 9 {10 for(i=0;i t-q;i--)14 printf("%d ",a[i]);15 printf("%d\n",a[t-q]);16 }17 }
这是用stl的快速排序 别人的代码 //我还没看到 以后会重新过来写.
1 #include2 #include 3 4 using namespace std; 5 6 static int a[1000000]; 7 8 int main() 9 {10 int i,n,m;11 while(EOF != scanf("%d %d",&n,&m))12 {13 for(i=0;i
至于厦大的 希尔 和 快排
1 #include2 #include 3 using namespace std; 4 int a[1000011],i,j,m,n,t,d,p,tmp; 5 int main() 6 { 7 while(scanf("%d",&t)!=EOF) 8 { 9 for(i=0;i 0;d=d/2) // 从n/2开始 一直向下传送 d直到d=112 {13 for(p=d;p =d&&a[i-d]>tmp;i=i-d)17 {18 a[i]=a[i-d];19 }20 a[i]=tmp;21 }22 }23 for(i=0;i
#include#include using namespace std;int a[1000011],i,j,m,n,t;int main(){ while(scanf("%d",&t)!=EOF) { for(i=0;i