• 1089. Insert or Merge (25)-判断插入排序还是归并排序


    判断插入排序很好判断,不是的话那就是归并排序了。

    由于归并排序区间是2、4、8开始递增的,所以要判断给出的归并排序执行到哪一步,就要k从2开始枚举。

    然后再对每个子区间进行一下sort即可。

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <string.h>
    #include <cmath>
    using namespace std;
    const int maxn=105;
    int num1[maxn],num2[maxn];
    
    int main()
    {
        int n;
        scanf("%d",&n);
        for(int i=0;i<n;i++)
            scanf("%d",&num1[i]);
        for(int i=0;i<n;i++)
            scanf("%d",&num2[i]);
        int p,idx;
        for(idx=0;num2[idx]<=num2[idx+1];idx++);
        p=idx+1;
        for(;num2[p]==num1[p] && p<n;p++);
    //printf("idx:%d p:%d
    ",idx,p);
        if(p==n){
            sort(num2,num2+idx+2);
            printf("Insertion Sort
    ");
            printf("%d",num2[0]);
            for(int i=1;i<n;i++){
                printf(" %d",num2[i]);
            }
        }
        else{
            int k;
            bool flag=true;
            for(k=2;k<=n;k=(k<<1)){
                for(int i=0;i<n;i+=k){
                    for(int j=i;j<i+k-1&&j<n-1;j++){
                        if(num2[j]>num2[j+1]){
                            flag=false;
                            break;
                        }
                    }
                    if(!flag)
                        break;
                }
                if(!flag)
                    break;
            }
            for(int i=0;i<n;i+=k){
                if(i+k-1<n){
                    sort(num2+i,num2+i+k);
                }
                else
                    sort(num2+i,num2+n);
            }
            printf("Merge Sort
    ");
            printf("%d",num2[0]);
            for(int i=1;i<n;i++){
                printf(" %d",num2[i]);
            }
        }
        return 0;
    }
    View Code
  • 相关阅读:
    Newtonsoft.Json 处理多态类型的反序列化
    33条C#和.NET经典面试题目及答案
    转:原码,反码,补码详解
    使用OpenXML操作Office文档
    WPF的Binding学习笔记(二)
    WPF的Binding学习笔记(一)
    M6: 使用摄像头(CameraCaptureUI)
    M5: 使用StorageFile
    NYOJ144_小珂的苦恼_C++
    搜索水题四连发_C++
  • 原文地址:https://www.cnblogs.com/chenxiwenruo/p/6388877.html
Copyright © 2020-2023  润新知