• 【PAT甲级】1089 Insert or Merge (25 分)(插入排序和归并排序)


    题意:

    输入一个正整数N(<=100),接着输入两行N个整数,第一行表示初始序列,第二行表示经过一定程度的排序后的序列。输出这个序列是由插入排序或者归并排序得到的,并且下一行输出经过再一次排序操作所得到的序列。数据保证了不会有两种排序方式都可以得到的序列。

    AAAAAccepted code:

     1 #define HAVE_STRUCT_TIMESPEC
     2 #include<bits/stdc++.h>
     3 using namespace std;
     4 int a[107];
     5 int b[107];
     6 int main(){
     7     ios::sync_with_stdio(false);
     8     cin.tie(NULL);
     9     cout.tie(NULL);
    10     int n;
    11     cin>>n;
    12     for(int i=1;i<=n;++i)
    13         cin>>a[i];
    14     for(int i=1;i<=n;++i)
    15         cin>>b[i];
    16     int pos=0;
    17     for(int i=n;i;--i)
    18         if(a[i]!=b[i]){
    19             pos=i;
    20             break;
    21         }
    22     int flag=1;
    23     int loc=0;
    24     for(int i=1;i<n;++i)
    25         if(b[i]>b[i+1]){
    26             loc=i;
    27             break;
    28         }
    29     for(int i=loc+1;i<=n;++i)
    30         if(a[i]!=b[i]){
    31             flag=0;
    32         }
    33     if(flag){
    34         cout<<"Insertion Sort
    ";
    35         sort(a+1,a+1+loc+1);
    36         for(int i=1;i<=n;++i){
    37             cout<<a[i];
    38             if(i<n)
    39                 cout<<" ";
    40         }
    41     }
    42     else{
    43         cout<<"Merge Sort
    ";
    44         int t=1;
    45         while(1){
    46             int flag=0;
    47             for(int i=1;i<=n;++i)
    48                 if(a[i]!=b[i]){
    49                     flag=1;
    50                     break;
    51                 }
    52             t*=2;
    53             for(int i=1;i<=n/t;++i)
    54                 sort(a+(i-1)*t+1,a+i*t+1);
    55             sort(a+n/t*t+1,a+n+1);
    56             if(!flag)
    57                 break;
    58         }
    59         for(int i=1;i<=n;++i){
    60             cout<<a[i];
    61             if(i<n)
    62                 cout<<" ";
    63         }
    64     }
    65     return 0;
    66 }
    保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
  • 相关阅读:
    使用JSONPath
    JSON 返回值JSONPath Syntax
    IntelliJ IDEA 打包Maven 构建的 Java 项目
    JMeter(7) 优化判断返回类型和返回值
    Windows copy
    Windows del
    Windows exit
    Windows netsh
    Windows start
    Windows taskkill
  • 原文地址:https://www.cnblogs.com/ldudxy/p/11901958.html
Copyright © 2020-2023  润新知