zoukankan      html  css  js  c++  java
  • PAT排序题---1035 插入与归并 (25分)

    1035 插入与归并 (25分)

    • 数据比较小,归并不用写合并函数,直接sort
    • 中间序列不包括初始序列
    #include<iostream>
    #include<vector>
    #include<cctype>
    #include<map>
    #include<set>
    #include<sstream>
    #include<string>
    #include<cstdio>
    #include<algorithm>
    
    #define inf 0x3f3f3f3f
    
    const int maxn=111;
    typedef long long ll;
    
    using namespace std;
    
    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;
    } 
    
    bool showArray(int A[]){
    	for(int i=0;i<n;i++){
    		printf("%d",A[i]);
    		if(i<n-1) cout<<" ";
    	}
    	cout<<"
    ";
    }
    
    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==true){
    			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(i+step,n));
    		if(flag){
    			showArray(tempOri);
    			return ;
    		}
    	}
    }
    int main() {
    	cin>>n;
    	for(int i=0;i<n;i++){
    		cin>>origin[i];
    		tempOri[i]=origin[i];
    	}
    	for(int i=0;i<n;i++){
    		cin>>changed[i];
    	}
    	if(insertSort()){
    		cout<<"Insertion Sort
    ";
    		showArray(tempOri);
    	}else{
    		cout<<"Merge Sort
    ";
    		for(int i=0;i<n;i++){
    			tempOri[i]=origin[i];
    		}
    		mergeSort();
    	}
    	return 0;
    }
    
    
  • 相关阅读:
    Android开发自学笔记(Android Studio)—4.1布局组件
    交换机远程管理
    ThinkPHP开发博客系统笔记之二
    PHP编码规范
    Kali Linux学习笔记
    CSS编码规范
    ThinkPHP开发博客系统笔记之一
    2 Powershell与Cmd以及Unix/Linux Shell
    不同vlan间通信的三种配置方式
    配置超级用户口令(Cisco IOS系统)
  • 原文地址:https://www.cnblogs.com/bingers/p/13128923.html
Copyright © 2011-2022 走看看