本文主要是介绍1035. 插入与归并(25) PAT乙级1089. Insert or Merge (25)PAT甲级,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
甲级传送门
乙级传送门
#include<stdio.h>
#include<algorithm>
#define MAX_N 110using namespace std;int n;int aim[MAX_N];
int ins[MAX_N];
int merg[MAX_N];bool isSame(int a[],int b[]){bool flag=true;for(int i=0;i<n;i++){if(a[i]!=b[i]){flag=false;return false;}}return true;
}void show(int a[]){for(int i=0;i<n;i++){printf("%d",a[i]);if(i!=n-1) printf(" ");}printf("\n");
}bool insert(){bool flag=false;for(int i=1;i<n;i++){if(i!=1&&isSame(ins,aim)){flag=true;}int key=ins[i];int j=i;while(j>0&&ins[j-1]>key){ins[j]=ins[j-1];j=j-1;}ins[j]=key;if(flag){return true;}}return false;
} void mergesort(){bool flag=false;for(int i=2;i/2<=n;i*=2){if(i!=2&&isSame(aim,merg)){flag=true;}for(int j=0;j<n;j+=i){sort(merg+j,merg+min(j+i,n));}if(flag){show(merg);return ;}}
}int main(){scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d",&ins[i]);merg[i]=ins[i];}for(int i=0;i<n;i++){scanf("%d",&aim[i]); }if(insert()){printf("Insertion Sort\n");show(ins);}else{printf("Merge Sort\n");mergesort();}}
这篇关于1035. 插入与归并(25) PAT乙级1089. Insert or Merge (25)PAT甲级的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!