关注
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn = 110;
int origin[maxn], tempOri[maxn], changed[maxn];
int n;
bool isSame(int a[], int b[]){
for(int i = 0; i < n; i++){
if(a[i] != b[i]) return false;
}
return true;
}
void showArray(int a[]){
for(int i = 0; i < n; i++){
printf("%d",a[i]);
if(i < n-1) printf(" ");
}
}
bool insertSort(){
bool flag = false;
for(int i = 1; i < n; i++){
if(i != 1 && isSame(tempOri, changed)){
flag = true;
}
int temp = tempOri[i], j = i;
while(j > 0 && tempOri[j - 1] > temp){
tempOri[j] = tempOri[j - 1];
j--;
}
tempOri[j] = temp;
if(flag && !isSame(tempOri, changed))
return true;
}
return false;
}
void mergeSort(){
bool flag = false;
for(int step = 2; step / 2 <= n; step *= 2){
if(step != 2 && isSame(tempOri, changed)){
flag =true;
}
for(int i = 0; i < n; i += step){
sort(tempOri + i, tempOri + min(step + i, n));
}
if(flag){
showArray(tempOri);
return;
}
}
}
int main(){
scanf("%d", &n);
for(int i = 0; i < n; i++){
scanf("%d", &origin[i]);
tempOri[i] = origin[i];
}
for(int i = 0; i < n; i++){
scanf("%d", &changed[i]);
}
if(insertSort()){
printf("Insertion Sort\n");
showArray(tempOri);
}else{
printf("Merge Sort\n");
for(int i = 0; i < n; i++){
tempOri[i] = origin[i];
}
mergeSort();
}
return 0;
}
查看原帖
点赞 评论
相关推荐
牛客热帖
更多
正在热议
更多
# 牛客AI体验站 #
18099次浏览 310人参与
# 记录实习开销 #
184073次浏览 783人参与
# 牛客新年AI问运 #
15369次浏览 169人参与
# 大家每天通勤多久? #
83122次浏览 648人参与
# 正在实习的你,几点下班 #
296484次浏览 2023人参与
# 牛客租房专区 #
153523次浏览 1571人参与
# 不给转正的实习,你还去吗 #
2625900次浏览 22864人参与
# 选择和努力,哪个更重要? #
191350次浏览 1497人参与
# 如何缓解入职前的焦虑 #
259658次浏览 1458人参与
# 我的岗位说明书 #
308023次浏览 2753人参与
# 你小时候最想从事什么职业 #
154156次浏览 2059人参与
# 有转正机会的小厂实习值得去吗? #
1091次浏览 21人参与
# 校招入职后的感受 #
488267次浏览 3682人参与
# 你最讨厌面试被问什么 #
1996次浏览 28人参与
# 投递无反馈,如何优化求职策略? #
8661次浏览 43人参与
# 牛友们,签完三方你在忙什么? #
137552次浏览 997人参与
# 担心入职之后被发现很菜怎么办 #
282724次浏览 1189人参与
# 选了这个offer,你有没有后悔? #
742070次浏览 4475人参与
# 帆软软件工作体验 #
14690次浏览 86人参与
# 你觉得今年秋招难吗 #
1988635次浏览 18492人参与