当前位置: 首页 > news >正文

1035 插入与归并(测试点6)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

solution

  • 类型判断:插入排序中已排序的部分有序,未排序的和原数组元素相同;否则为归并排序
  • 测试点6:对于归并排序的子序列长度,不能简单视为前k个有序则子序列长度就是k
    例如该测试用例的归并排序的子序列长度应该为2,而非4
8
2 1 3 8 5 2 4 6
1 2 3 8 2 5 4 6
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 110;
int pre[maxn], did[maxn];
int main(){int n, cnt = 0, flag = 0, p, t;scanf("%d", &n);for(int i = 0; i < n; i++){scanf("%d", pre + i);}for(int i = 0; i < n; i++){scanf("%d", did + i);}for(p = 0; p < n; p++){if(p == 0) t = did[p];if(did[p] < t) break;t = did[p];cnt++;}for(; p < n; p++){if(did[p] != pre[p]){flag = 1;break;}}if(flag){printf("Merge Sort\n");t = 1;while(t){t = 0;for(int i = 0; i < n / cnt; i++){for(int j = i * cnt; j < (i + 1) * cnt - 1; j++){if(did[j] > did[j + 1]) t = 1;}}if(t) cnt /= 2;}cnt *= 2;for(int i = 0; i < n / cnt; i++){sort(did + i * cnt, did + (i + 1) * cnt);}sort(did + n / cnt * cnt, did + n);}else{printf("Insertion Sort\n");sort(did, did + cnt + 1);}for(int i = 0; i < n; i++){if(i) printf(" ");printf("%d", did[i]);}return 0;
} 
http://www.lryc.cn/news/368587.html

相关文章:

  • 什么情况下需要使用分布式事务,有哪些方案?
  • Java加密体系结构参考指南-Java Cryptography Architecture
  • C++中避免内存泄漏的方法
  • 5.1 实体完整性
  • (学习笔记)数据基建-数据质量
  • WINUI——Behavior(行为)小结
  • Ruoyi5.x RuoYi-Vue-Plus新建Translation翻译类
  • 类加载的奥秘
  • Spring知识点总结
  • STM32Cube系列教程11:STM32 AES加解密模块性能测试
  • Vue2基础:.sync修饰符的使用,认识,作用,本质案例演示,实现父子之间的通信。
  • 【数据结构与算法】使用单链表实现队列:原理、步骤与应用
  • DHCP服务
  • C++笔试-剑指offer
  • Mac安装jadx并配置环境
  • 前端学习----css基础语法
  • 超详解——python条件和循环——小白篇
  • DNS协议 | NAT技术 | 代理服务器
  • 深入ES6:解锁 JavaScript 类与继承的高级玩法
  • 领域驱动设计:异常处理
  • 网络网络层之(6)ICMPv6协议
  • 《大道平渊》· 拾壹 —— 商业一定是个故事:讲好故事,员工奋发,顾客买单。
  • JavaScript 如何访问本地文件夹
  • ArrayList顺序表简单实现
  • 144、二叉树的前序递归遍历
  • youtube 1080 分辨率 下载方式
  • 计算机网络ppt和课后题总结(下)
  • 测试基础12:测试用例设计方法-边界值分析
  • AI大模型在健康睡眠监测中的深度融合与实践案例
  • 【西瓜书】9.聚类