1035. 插入与归并(25)

1035. 插入与归并(25)

时间限制
200 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue

根据维基百科的定义:

插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。

归并排序进行如下迭代操作:首先将原始序列看成N个只包含1个元素的有序子序列,然后每次迭代归并两个相邻的有序子序列,直到最后只剩下1个有序的序列。

现给定原始序列和由某排序算法产生的中间序列,请你判断该算法究竟是哪种排序算法?

输入格式:

输入在第一行给出正整数N (<=100);随后一行给出原始序列的N个整数;最后一行给出由某排序算法产生的中间序列。这里假设排序的目标序列是升序。数字间以空格分隔。

输出格式:

首先在第1行中输出“Insertion Sort”表示插入排序、或“Merge Sort”表示归并排序;然后在第2行中输出用该排序算法再迭代一轮的结果序列。题目保证每组测试的结果是唯一的。数字间以空格分隔,且行末不得有多余空格。

输入样例1:
10
3 1 2 8 7 5 9 4 6 0
1 2 3 7 8 5 9 4 6 0
输出样例1:
Insertion Sort
1 2 3 5 7 8 9 4 6 0
输入样例2:
10
3 1 2 8 7 5 9 4 0 6
1 3 2 8 5 7 4 9 0 6
输出样例2:
Merge Sort
1 2 3 8 4 5 7 9 0 6

解析:学习的本质和目的是善假于物,如果一切都是从0做起那在这个世界上是生存不下去的,牛顿都说过,“站在巨人的肩上”,所以学习算法一样,你可以用现有的算法和工具解决问题,至于深层次的问题的理解是一个漫长的边实践边思考的过程,记得一个数学老师指点学生怎样学习微积分,大致意思是说,“只要懂得基本的概念就可以了,剩下的功夫就是做题做题做题,在实践中理解更深的概念,如果上来就往底层挖,结果就是陷入一个知识黑洞中而再也出不来了,学习的本质就是两个,认识工具,熟练使用工具”。


代码:


#include <stdio.h>
#include <stdlib.h>int cmp(const void *a, const void *b)
{return *(int *)a - *(int *)b;
}int is_same(int *a, int *b, int N)
{int i;int flag = 1;for (i = 0; i < N; i++){if (a[i] != b[i]){flag = 0;break;}}return flag;
}void print(int *arr, int N)
{int loopk;for (loopk = 0; loopk < N; loopk++){printf("%d%s", arr[loopk], loopk == N-1 ? "" : " ");}printf("\n");
}int main()
{int N;int input[2<<7], part_sort[2<<7], sorted[2<<7];int loopi, loopj, loopk;int flag = 1;int once = 0;scanf("%d", &N);for (loopi = 0; loopi < N; loopi++){scanf("%d", input+loopi);sorted[loopi] = *(input+loopi);}for (loopi = 0; loopi < N; loopi++){scanf("%d", part_sort+loopi);}for (loopi = 0; loopi < N-1; loopi++){if (part_sort[loopi] > part_sort[loopi+1]){break;}}for (loopj = loopi+1; loopj < N; loopj++){if (part_sort[loopj] != input[loopj]){flag = 0;break;}}#if 0loopi = N - 1;while (loopi >= 0 && input[loopi]==part_sort[loopi]){loopi--;}qsort(sorted, loopi+1, sizeof(int), cmp);for (loopj = 0; loopj <= loopi; loopj++){if (sorted[loopj] != part_sort[loopj]){flag = 0;break;}}#endifif (flag == 1){printf("Insertion Sort\n");qsort(sorted, loopi+2, sizeof(int), cmp);print(sorted, N);}else{printf("Merge Sort\n");for (loopi = 1; loopi <= 20*N; loopi *= 2){once = is_same(input, part_sort, N);loopj = 0;	// [loopj*loopi, (loopj+1)*loopi-1] partion to be sortwhile ((loopj+1) * loopi < N){qsort(input+loopj*loopi, loopi, sizeof(int), cmp);loopj++;}if (loopj * loopi < N){qsort(input+loopj*loopi, N-loopj*loopi, sizeof(int), cmp);}if (once == 1){print(input, N);break;}}}return 0;
}

 

下面分析一下为什么最后注释掉的那段代码是错误的:





本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421096.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自定义泛型集合,接口

自定义泛型集合 package C12_21;public class abstractList {public static void main(String[] args) {stu<String> stus new stu<String>();stus.setS("hello");System.out.println(stus.getS());// 灵活, 可以传入任意数据类型。 将运行错误转变为编…

安装json扩展

json_encode无法使用&#xff0c;要求扩展php>5.2,json>2.1.0 http://syue.com/Software/Web/php/17843.html 改php.ini加extensionjson.so转载于:https://www.cnblogs.com/mucaiweiblog/p/3618599.html

实验1 熟悉实验环境

本操作系统实验的硬件环境是IA-32(x86)架构的PC机&#xff08;就是你现在正在使用的计算机&#xff09;&#xff0c;主要软件环境是Bochs gcc 你最喜欢的编辑器/IDE 你最喜欢的操作系统 Linux 0.11源代码。实验的基本流程是根据实验要求编写应用程序、修改Linux 0.11的源代…

c/s和b/s两种开发模式

CS&#xff08;Client/Server&#xff09;&#xff1a;客户端----服务器结构。 C/S结构在技术上很成熟&#xff0c;它的主要特点是交互性强、具有安全的存取模式、网络通信量低、响应速度快、利于处理大量数据。因为客户端要负责绝大多数的业务逻辑和UI展示&#xff0c;又称为…

前端学习(1032):jquery插件-瀑布流

1网址打开 下载插件 2引入css和js和html 3修改图片

实验2 操作系统的引导

操作系统的引导 实验目的 熟悉hit-oslab实验环境&#xff1b;建立对操作系统引导过程的深入认识&#xff1b;掌握操作系统的基本开发过程&#xff1b;能对操作系统代码进行简单的控制&#xff0c;揭开操作系统的神秘面纱。 实验内容 此次实验的基本内容是&#xff1a; 阅读《…

从Tom说JSP原理

第一次执行&#xff1a; 客户端通过电脑连接服务器&#xff0c;因为是请求是动态的&#xff0c;所以所有的请求交给WEB容器来处理在容器中找到需要执行的*.jsp文件之后*.jsp文件通过转换变为*.java文件.java文件经过编译后&#xff0c;形成.class文件最终服务器要执行形成的*.…

初识SolrJ开发, schema.xml的配置与服务初始化.

schema.xml位于solr/collection1/conf/目录下&#xff0c;是Solr中用户定义字段类型及字段的配置文件. Solr版本: 4.6.0 第一步: Schema.xml说明 实例schema.xml结构同solr/collection1/conf/schema.xml结构一致,具体配置通过注解已注明. <?xml version"1.0" enc…

实验3 编程、编译、链接、跟踪

本章的核心知识点在4.9节&#xff0c;王爽老师讲的特别清楚明白&#xff0c;多读几遍&#xff0c;跟着多做几遍&#xff0c;增加对底层的感觉&#xff1b; 本实验的目的是明白4.9节所讲的东西&#xff0c;具体点如下&#xff1a; 1&#xff0c;command&#xff0c;debug&…

Java动态查询

CODING COMING. // 组合模糊查询 根据年龄 和 姓名 模糊查询 学生。public List<Student> findTwo(int age, String name) {List<Student> list new ArrayList<Student>();StringBuffer sql new StringBuffer("select * from student where 1 1&quo…

前端学习(1033):jquery插件-图片懒加载

1下载插件 2html css和js引入 ctrlh 快速替换 必须最后插入

对自己有用的VS调试技巧

设置下一条语句编辑然后继续符号越界后查看堆对象查看数组的值底部设置下一条语句 返回顶部 一个典型的调试情况就是通过单步跟踪分析为什么一个函数调用失败了。当你发现一个函数调用的另一个函数返回错误的时候你会怎么做&#xff1f;重启调试&#xff1f;有更好的方法。拖动…

前端学习(1034):jquery插件-全屏滚动

fullpage.js 1下载插件 js css html 4引入

实验4 [bx]和loop的使用

(1) assume cs:codesgcodesg segmentmov ax, 0mov ds, axmov bx, 200H ;ds:bx数据区mov cx, 40hmov dl, 0 s: mov ds:[bx], dl ;dl中间变量inc bxinc dlloop smov ax, 4c00h int 21hcodesg ends end实验结果&#xff1a; &#xff08;2&#xff09; 考虑&#xff08;1&#…

面试 jsp转发和重定向

转发 HttpServletRequest 用法 req.getRequestDispatcher("studentServlet").forward(req, resp);重定向 HttpServletResponse 用法 resp.sendRedirect("studentServlet");区别 转发的主导权在服务器,重定向的主导权在客户端 转发可以用request传递数据…

好的API设计

[非原创&#xff0c;原文链接] API设计书籍下载&#xff1a; 1、keynote.pdf 2、api-design.pdf 最近在重构公司的一个交互中间件&#xff0c;在重新设计API及总体架构的时候思考了许多&#xff0c; 不禁萌发了一个疑问&#xff0c;什么样的API才算是一个设计良好的API呢&…

前端学习(1035):bootstrap-js插件1

1引入css和js 2复制html 组件 3运行之后得到下拉框

面试之JSP九大内置对象和JSP四大作用域

jsp 九大内置对象和其作用详解 JSP中一共预先定义了9个这样的对象&#xff0c;分别为&#xff1a;request、response、session、application、out、pagecontext、config、page、exception 1、request对象 request 对象是 javax.servlet.httpServletRequest类型的对象。 该对象…

实验5 编写、调试具有多个段的程序

本章实验的主题主要讲代码段、数据段、栈段的使用。 &#xff08;1&#xff09; assume cs:code, ds:data, ss:stackdata segmentdw 0123h, 0456h, 0789h, 0abch, 0defh, 0fedh, 0cbah, 0987h data endsstack segmentdw 0, 0, 0, 0, 0, 0, 0, 0 stack endscode segment start:…