PAT-1025.插入与归并(25)
来源:互联网 发布:sql2008新建数据库 编辑:程序博客网 时间:2024/06/09 14:07
#include<iostream>
#include<algorithm>
using namespace std;
int N;
int inser(int i,int A[],int B[]);
int main()
{
int A[100],B[100],C[100];
int i,j,k,temp;
cin>>N;
for(i=0;i<N;i++)
{cin>>A[i];C[i]=A[i];}
for(i=0;i<N;i++)
cin>>B[i];
for(i=1;i<N;i++)
{
sort(A,A+i);
if(inser(i,A,B))
{
cout<<"Insertion Sort"<<endl;
for(j=0;j<N-1;j++)
cout<<A[j]<<" ";
cout<<A[j];
break;
}
}
if(i==N&&N!=0)
{
cout<<"Merge Sort"<<endl;
temp=2;
while(1)
{
for(i=0;i<N;i=i+temp)
{
if(i+temp<=N)
sort(C+i,C+i+temp);
else
{sort(C+i,C+N);break;}
}
temp*=2;
for(j=0;j<N;j++)
if(C[j]!=B[j])
break;
if(j==N)
{
for(i=0;i<N;i=i+temp)
{
if(i+temp<=N)
sort(C+i,C+i+temp);
else
{sort(C+i,C+N);break;}
}
for(i=0;i<N-1;i++)
cout<<C[i]<<" ";
cout<<C[i];
break;
}
}
}
return 0;
}
int inser(int i,int A[],int B[])
{
int j;
for(j=0;j<N;j++)
if(A[j]!=B[j])
break;
if(j==N)
{
i++;
sort(A,A+i);
inser(i,A,B);
return 1;
}
return 0;
#include<algorithm>
using namespace std;
int N;
int inser(int i,int A[],int B[]);
int main()
{
int A[100],B[100],C[100];
int i,j,k,temp;
cin>>N;
for(i=0;i<N;i++)
{cin>>A[i];C[i]=A[i];}
for(i=0;i<N;i++)
cin>>B[i];
for(i=1;i<N;i++)
{
sort(A,A+i);
if(inser(i,A,B))
{
cout<<"Insertion Sort"<<endl;
for(j=0;j<N-1;j++)
cout<<A[j]<<" ";
cout<<A[j];
break;
}
}
if(i==N&&N!=0)
{
cout<<"Merge Sort"<<endl;
temp=2;
while(1)
{
for(i=0;i<N;i=i+temp)
{
if(i+temp<=N)
sort(C+i,C+i+temp);
else
{sort(C+i,C+N);break;}
}
temp*=2;
for(j=0;j<N;j++)
if(C[j]!=B[j])
break;
if(j==N)
{
for(i=0;i<N;i=i+temp)
{
if(i+temp<=N)
sort(C+i,C+i+temp);
else
{sort(C+i,C+N);break;}
}
for(i=0;i<N-1;i++)
cout<<C[i]<<" ";
cout<<C[i];
break;
}
}
}
return 0;
}
int inser(int i,int A[],int B[])
{
int j;
for(j=0;j<N;j++)
if(A[j]!=B[j])
break;
if(j==N)
{
i++;
sort(A,A+i);
inser(i,A,B);
return 1;
}
return 0;
}
/********************************************************/
将数组先分步进行插入排序,若产生的新数组和输入的样例数组相同,则在进行一步插入排序,输出数组。当排序完全之后还是无法和样例匹配上则为归并排序。
归并排序要特别注意数组最后一段的归并,若是比此时要归并的数段小,则将剩下的全排,不分类判断的话会有可能造成数组越界导致段错误。
阅读全文
0 0
- PAT-1025.插入与归并(25)
- PAT乙级 插入与归并(25)
- 【PAT】1035. 插入与归并(25)
- PAT-乙级-1035. 插入与归并(25)
- C++ - PAT - 1035. 插入与归并(25)
- PAT 乙级 1035. 插入与归并(25)
- PAT-B 1035. 插入与归并(25)
- 1035. 插入与归并(25) PAT
- PAT乙级 1035. 插入与归并(25)
- PAT 乙级 1035. 插入与归并(25)
- [PAT乙级]1035. 插入与归并(25)
- PAT乙级1035. 插入与归并(25)
- pat 乙级 1035. 插入与归并(25)
- PAT乙级-1035 插入与归并(25)
- PAT乙级 1035. 插入与归并(25)
- PAT-B1035. 插入与归并
- PAT 1035插入与归并
- pat 1035. 插入与归并
- 精通正则表达式:5 6 ...
- 阈值化
- 缺陷报告的有效性
- maven项目出现 Missing artifact jdk.tools:jdk.tools:jar:1.7
- 如何将UCI数据集转换成Matlab可用格式
- PAT-1025.插入与归并(25)
- Visual Studio显示行数
- 蓝桥杯 算法训练 P0103
- 究竟啥才是互联网架构“高可用”
- Hibernate
- 彻底理解Linux的各种终端类型以及概念
- java实现顺序表数据结构
- RabbitMQ基础概念详解
- 文件内容快速收索工具(Listary)