【九度】题目1393:合并两个排序序列

2024-08-25 12:38

本文主要是介绍【九度】题目1393:合并两个排序序列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目地址:http://ac.jobdu.com/problem.php?pid=1393
时间限制:2 秒内存限制:32 兆特殊判题:否提交:282解决:100
题目描述:
输入两个递增的序列,输出合并这两个序列后的递增序列。
输入:
每个测试案例包括3行:
第一行为1个整数n(1<=n<=1000000)表示这两个递增序列的长度。
第二行包含n个整数,表示第一个递增序列。
第三行包含n个整数,表示第二个递增序列。
输出:
对应每个测试案例,输出合并这两个序列后的递增序列。
样例输入:
4
1 3 5 7
2 4 6 8
样例输出:
1 2 3 4 5 6 7 8
答疑:
解题遇到问题?分享解题心得?讨论本题请访问: http://t.jobdu.com/thread-8116-1-1.html

归并排序

C++ AC

#include <stdio.h>
const int maxn = 1000002;
int n,i;int main(){while(scanf("%d",&n) != EOF){int len = 2*n;int *array = new int[len];int *sortArr1 = new int[n];int *sortArr2 = new int[n];for(i = 0; i < n; i++){scanf("%d",&sortArr1[i]);}for(i = 0; i < n; i++){scanf("%d",&sortArr2[i]);}int k1 = 0;int k2 = 0;int k = 0;while(k1 < n && k2 < n){if(sortArr1[k1] < sortArr2[k2]){array[k] = sortArr1[k1];k++;k1++;}else{array[k] = sortArr2[k2];k++;k2++;}}while(k1 < n){array[k] = sortArr1[k1];k++;k1++;}while(k2 < n){array[k] = sortArr2[k2];k++;k2++;}for(i = 0; i < len-1; i++){printf("%d ",array[i]);}printf("%d\n",array[len-1]);}   return 0;
}
/**************************************************************Problem: 1393User: wangzhenqingLanguage: C++Result: AcceptedTime:1190 msMemory:16656 kb
****************************************************************/

Java AC

import java.io.StreamTokenizer;
public class Main{/** 1371*/public static void main(String[] args) throws Exception {StreamTokenizer st = new StreamTokenizer(System.in);while (st.nextToken() != StreamTokenizer.TT_EOF) {int size = (int) st.nval;int length = size * 2;int arrayA[] = new int[size];int arrayB[] = new int[size];for (int i = 0; i < size; i++) {st.nextToken();arrayA[i] = (int) st.nval;}for (int i = 0; i < size; i++) {st.nextToken();arrayB[i] = (int) st.nval;}int array[] = new int[length];int i = 0;int j = 0;int k = 0;while (i<size&&j<size) {if (arrayA[i]<arrayB[j]) {array[k++] = arrayA[i++];}else {array[k++] = arrayB[j++];}}if(i==size){  while(j<size){  array[k++] = arrayB[j++];  }  }  else{  while(i<size){  array[k++] = arrayA[i++];  }  }  StringBuffer sb = new StringBuffer();for (i = 0; i < length - 1; i++) {sb.append(array[i]);sb.append(" ");}sb.append(array[length - 1]);System.out.println(sb.toString());}}}
/**************************************************************Problem: 1393User: wzqwsrfLanguage: JavaResult: AcceptedTime:2060 msMemory:111380 kb
****************************************************************/

这篇关于【九度】题目1393:合并两个排序序列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1105574

相关文章

基于C#实现PDF文件合并工具

《基于C#实现PDF文件合并工具》这篇文章主要为大家详细介绍了如何基于C#实现一个简单的PDF文件合并工具,文中的示例代码简洁易懂,有需要的小伙伴可以跟随小编一起学习一下... 界面主要用于发票PDF文件的合并。经常出差要报销的很有用。代码using System;using System.Col

Python中lambda排序的六种方法

《Python中lambda排序的六种方法》本文主要介绍了Python中使用lambda函数进行排序的六种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录1.对单个变量进行排序2. 对多个变量进行排序3. 降序排列4. 单独降序1.对单个变量进行排序

Python视频剪辑合并操作的实现示例

《Python视频剪辑合并操作的实现示例》很多人在创作视频时都需要进行剪辑,本文主要介绍了Python视频剪辑合并操作的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习... 目录介绍安装FFmpegWindowsMACOS安装MoviePy剪切视频合并视频转换视频结论介绍

关于Java内存访问重排序的研究

《关于Java内存访问重排序的研究》文章主要介绍了重排序现象及其在多线程编程中的影响,包括内存可见性问题和Java内存模型中对重排序的规则... 目录什么是重排序重排序图解重排序实验as-if-serial语义内存访问重排序与内存可见性内存访问重排序与Java内存模型重排序示意表内存屏障内存屏障示意表Int

不删数据还能合并磁盘? 让电脑C盘D盘合并并保留数据的技巧

《不删数据还能合并磁盘?让电脑C盘D盘合并并保留数据的技巧》在Windows操作系统中,合并C盘和D盘是一个相对复杂的任务,尤其是当你不希望删除其中的数据时,幸运的是,有几种方法可以实现这一目标且在... 在电脑生产时,制造商常为C盘分配较小的磁盘空间,以确保软件在运行过程中不会出现磁盘空间不足的问题。但在

锐捷和腾达哪个好? 两个品牌路由器对比分析

《锐捷和腾达哪个好?两个品牌路由器对比分析》在选择路由器时,Tenda和锐捷都是备受关注的品牌,各自有独特的产品特点和市场定位,选择哪个品牌的路由器更合适,实际上取决于你的具体需求和使用场景,我们从... 在选购路由器时,锐捷和腾达都是市场上备受关注的品牌,但它们的定位和特点却有所不同。锐捷更偏向企业级和专

在C#中合并和解析相对路径方式

《在C#中合并和解析相对路径方式》Path类提供了几个用于操作文件路径的静态方法,其中包括Combine方法和GetFullPath方法,Combine方法将两个路径合并在一起,但不会解析包含相对元素... 目录C#合并和解析相对路径System.IO.Path类幸运的是总结C#合并和解析相对路径对于 C

hdu2241(二分+合并数组)

题意:判断是否存在a+b+c = x,a,b,c分别属于集合A,B,C 如果用暴力会超时,所以这里用到了数组合并,将b,c数组合并成d,d数组存的是b,c数组元素的和,然后对d数组进行二分就可以了 代码如下(附注释): #include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<que

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c