1035 插入与归并 测试点2、5、6
易错点
-
测试点2:插入排序的判断,思路是否正确,可检验测试点:3 1 3 2 1 3 2,如果输出:插入排序,1 2 3,即正确
-
测试点5、6:归并排序中,若归并的每组数的数量为n,若最后一组数的数量不足n,此时最后一组数也要记得进行排序。如:
7 3 1 2 8 7 5 9 1 3 2 8 5 7 4
代码
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int a[101];
int b[101];
int main()
{
int n;
int f;
int max=-9999999;
int maxj;
int tmp;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=0;i<n;i++){
cin>>b[i];
}
for(int i=0;i<n;i++){
if(b[i]>b[i+1]&&i+1<n){
for(int j=i+1;j<n;j++){
if(a[j]!=b[j]){
cout<<"Merge Sort"<<endl;
f=2;
goto here;
}
}
cout<<"Insertion Sort"<<endl;
f=1;
break;
}
}
// for(int i=n-1;i>=0;i--){
// if(a[i]==b[i]){
//
// }
// else{
// for(int j=i;j>=0;j--){
// if(j>=1&&b[j]<b[j-1]){
// cout<<"Merge Sort"<<endl;
// f=2;
// goto here;
// }
// }
// cout<<"Insertion Sort"<<endl;
// f=1;
// break;
// }
// }
here:
if(f==1){
for(int i=0;i<n;i++){
if(i+1<n&&b[i]>b[i+1]){
for(int j=i+1;j>=0;j--){
if(b[j]<b[j-1]&&j-1>=0){
tmp=b[j];
b[j]=b[j-1];
b[j-1]=tmp;
}
}
break;
}
}
for(int i=0;i<n;i++){
if(i==0){
cout<<b[i];
}
else{
cout<<" "<<b[i];
}
}
}
if(f==2){
for(int i=0;i<n;i++){
if(b[i]>b[i+1]&&i+1<n){
tmp=i+1;
here2:
for(int j=0;j*tmp<n;j++){
if((j+1)*tmp-1<n){
for(int k=j*tmp;k<(j+1)*tmp-1;k++){
if(b[k]>b[k+1]&&k+1<(j+1)*tmp-1){
tmp--;
goto here2;
}
}
}
else{
for(int k=j*tmp;k<n;k++){
if(b[k]>b[k+1]&&k+1<n){
tmp--;
goto here2;
}
}
}
}
break;
}
}
tmp*=2;
for(int i=0;(i+1)*tmp-1<n;i++){
sort(b+tmp*i,b+tmp*(i+1));
if((i+2)*tmp-1>=n){
sort(b+(i+1)*tmp,b+n);
}
}
for(int i=0;i<n;i++){
if(i==0){
cout<<b[i];
}
else{
cout<<" "<<b[i];
}
}
}
return 0;
}
参考
(27条消息) A1089/B1035——Insert Merge插入与归并(测试点5、6)_Yoosii的博客-CSDN博客
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异