ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

1035 插入与归并 测试点2、5、6

2022-07-17 10:05:19  阅读:173  来源: 互联网

标签:tmp 归并 测试点 int && include 1035


易错点

  1. 测试点2:插入排序的判断,思路是否正确,可检验测试点:3 1 3 2 1 3 2,如果输出:插入排序,1 2 3,即正确

  2. 测试点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博客

标签:tmp,归并,测试点,int,&&,include,1035
来源: https://www.cnblogs.com/wodeblog1982/p/16485934.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有