1035_插入与归并(25)
来源:互联网 发布:超牛数据恢复软件下载 编辑:程序博客网 时间:2024/06/18 17:54
#include<stdio.h>#include<stdlib.h>#include<string.h>int cmp(const void *a,const void *b){return *((int *)a)-*((int *)b);}int isSort(int *a,int low,int high){int i;for(i=low;i<high-1;i++)if(a[i]>a[i+1]) break;if(i<high-1) return 0;return 1;}void Insertion(int *a,int n,int m){int i;printf("Insertion Sort\n");if(m<n) qsort(a,m+1,sizeof(int),cmp);for(i=0;i<n-1;i++) printf("%d ",a[i]);printf("%d\n",a[i]);}void Merge(int *a,int n,int m){int i,k;printf("Merge Sort\n");k=n/(2*m);for(i=0;i<k;i++) qsort(a+2*i*m,2*m,sizeof(int),cmp);if(n%(2*m)!=0) qsort(a+2*k*m,n-2*k*m,sizeof(int),cmp);for(i=0;i<n-1;i++) printf("%d ",a[i]);printf("%d\n",a[i]);}int main(){int n,i,m,k,flag,f;int *a,*b,*c;while(~scanf("%d",&n)){m=1;a=(int *)malloc(n*sizeof(int));b=(int *)malloc(n*sizeof(int));c=(int *)malloc(n*sizeof(int));for(i=0;i<n;i++) scanf("%d",&a[i]);for(i=0;i<n;i++){scanf("%d",&b[i]);c[i]=a[i];}for(i=1;i<n;i++){if(b[i-1]<=b[i])m++;else break;}qsort(c,m,sizeof(int),cmp);for(i=0;i<n;i++)if(b[i]!=c[i]) break;if(n==i) flag=1;else{flag=2;f=0;while(f!=1){f=1;k=n/m;for(i=0;i<k;i++)if(!isSort(b,i*m,(i+1)*m))f=0;if(!isSort(b,i*m,n)) f=0;if(f==0) m/=2;}}switch(flag){case 1:Insertion(b,n,m);break;case 2:Merge(b,n,m);break;}free(a);free(b);}return 0;}
0 0
- 1035_插入与归并(25)
- 1035 插入与归并
- 1035 插入与归并
- 插入与归并(25)
- 插入与归并(25)
- PAT乙级-1035 插入与归并(25)
- PAT 1035插入与归并
- 1035. 插入与归并(25)
- 1035. 插入与归并(25)
- 1035. 插入与归并(25)
- 1035. 插入与归并(25)
- 1035. 插入与归并(25)
- 1035. 插入与归并(25)
- 1035. 插入与归并(25)
- P1035. 插入与归并(25)
- 1035. 插入与归并(25)
- 1035. 插入与归并(25)
- 1035. 插入与归并(25)
- Y470 Y570 UEFI 2.12BIOS(64位)
- fatal error LNK1281: 无法生成 SAFESEH 映像。
- 优化多说插件的加载速度
- 1034_有理数四则运算(20)
- Android天气预报
- 1035_插入与归并(25)
- 栈
- LTE的GAA架构,LTE如何使用TLS
- linux命令行中curl和wget自动解压功能对比
- Openstack源代码分析之PasteDeploy+Webob实例以及Openstack源代码下PasteDeploy+Webob+Routes分析
- 自动化运维经验谈,以及为什么Docker是革命性的
- Objective-C消息机制的原理
- 一元多项式求导 (25)
- securecrt使用教程、SecureCRT配置详细图文教程