package com.zken.test;

/**
* @author iamzken
* 2015-8-28
* 合并两个有序数组
*
*/
public class Sorter2 { public static void merge2SortedArray(int[] a , int[] b , int[] c){
//a数组的当前索引
int i = 0;
//b数组的当前索引
int j = 0;
//c数组的当前索引
int k = 0;
//循环,只要a和b都没有遍历完就一直循环
while(i < a.length && j < b.length){
//如果当前a[i]比b[j]小,就把c[k]元素置为a[i],同时k++,i++
if(a[i] < b[j]){
c[k++] = a[i++];
//否则,如果当前a[i]比b[j]大,就把c[k]元素置为b[j],同时k++,j++
}else{
c[k++] = b[j++];
}
} //上个循环能够结束,说明a已经循环完或b已经循环完
//下述两个循环只能有一个满足循环条件
//只要a没有循环完,就把a中剩下的元素依次放入c中
while(i < a.length){
c[k++] = a[i++];
}
//只要b没有循环完,就把b中剩下的元素依次放入c中
while(j < b.length){
c[k++] = b[j++];
}
}
//测试程序
public static void main(String[] args) {
//待合并数组a
int[] a = new int[]{1,3,5,7,9};
//待合并数组b
int[] b = new int[]{2,4,6,8};
//c用来存放合并之后的数组
int[] c = new int[a.length+b.length];
merge2SortedArray(a, b, c);
for(int i = 0;i < c.length;i++){
System.out.print(c[i]+"\t");
}
} }

算法研究之合并两个已排序的数组java版的更多相关文章

  1. 剑指Offer15 合并两个已排序链表

    /************************************************************************* > File Name: 15_MergeT ...

  2. 两个已排序数组的合并-C语言

    最近在纸上写一个已排序数组的合并时,花了超过预期的时间.仔细想想,这种要放到毕业找工作那会两下就出来了,原因还在于工作后对基础没有重视,疏于练习. 说开一点,现在搜索引擎的发达确实给问题的解决带来了便 ...

  3. java实现合并两个已经排序的列表

    相对于C++来说,Java的最大特点之一就是没有令人困惑的指针,但是我们不可否认,在某些特定的情境下,指针确实算的上一把利刃.虽然Java中没有明确定义出指针,但是由于类的思想,我们可以使用class ...

  4. C++实现合并两个已经排序的链表

    /* * 合并两个已经排序的链表.cpp * * Created on: 2018年4月11日 * Author: soyo */ #include<iostream> using nam ...

  5. 内部排序比较(Java版)

    内部排序比较(Java版) 2017-06-21 目录 1 三种基本排序算法1.1 插入排序1.2 交换排序(冒泡)1.3 选择排序(简单)2 比较3 补充3.1 快速排序3.2 什么是桶排序3.3 ...

  6. 合并k个已排序的链表 分类: leetcode 算法 2015-07-09 17:43 3人阅读 评论(0) 收藏

    最先想到的是把两个linked lists 合并成一个. 这样从第一个开始一个一个吞并,直到所有list都被合并. class ListNode:# Definition for singly-lin ...

  7. 算法练习之合并两个有序链表, 删除排序数组中的重复项,移除元素,实现strStr(),搜索插入位置,无重复字符的最长子串

    最近在学习java,但是对于数据操作那部分还是不熟悉 因此决定找几个简单的算法写,用php和java分别实现 1.合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两 ...

  8. 【算法剖析】寻找两个已序数组中的第k大元素

    1.问题描述 给定两个数组A与B,其大小分别为m.n,假定它们都是已按照增序排序的数组,我们用尽可能快的方法去求两个数组合并后第k大的元素,其中,1\le k\le(m+n).例如,对于数组A=[1, ...

  9. comm - 逐行比较两个已排序的文件

    总览 (SYNOPSIS) ../src/comm [OPTION]... LEFT_FILE RIGHT_FILE 描述 (DESCRIPTION) 逐行比较 已排序的 文件 LEFT_FILE 和 ...

  10. leetcode算法题2: 合并两个二叉树。递归,如何切入并保持清醒?

    /* Given two binary trees and imagine that when you put one of them to cover the other, some nodes o ...

随机推荐

  1. MyISAM存储引擎的表级锁

    MyISAM存储引擎的表级锁 如果了解过文件锁的用法,那理解数据库锁就简单了.锁其实就协调多个进程或线程并发时,处理访问同一个资源的机制.在项目开发中,表锁是MySQL中作用范围较大的一种锁,它锁定的 ...

  2. 制作包含最新更新的Windows 10 LTSC 2021 ISO

    介绍 在制作桌面云windows 模板的时候,一般需要安装最新的更新.更新安装过程非常耗时,并且安装更新会导致桌面模板的磁盘空间膨胀.制作出的模板会占用很大的磁盘空间.如果不安装更新,模板大小约5G. ...

  3. Flutter聊天室|dart+flutter仿微信App界面|flutter聊天实例

    一.项目概述 flutter-chatroom是采用基于flutter+dart+chewie+image_picker+photo_view等技术跨端开发仿微信app界面聊天室项目.实现了消息发送/ ...

  4. delphi TThread.WaitFor 用法

    在 Delphi 中,TThread.WaitFor 方法用于等待一个线程完成执行.当你创建一个线程并希望主线程(或其他线程)等待这个线程结束时,你可以使用这个方法. 以下是 TThread.Wait ...

  5. 《Learning from Context or Names?An Empirical Study on Neural Relation Extraction》论文阅读笔记

    代码 原文地址 预备知识: 1.什么是对比学习? 对比学习是一种机器学习范例,将未标记的数据点相互并列,以教导模型哪些点相似,哪些点不同. 也就是说,顾名思义,样本相互对比,属于同一分布的样本在嵌入空 ...

  6. Unicode编码的魅力:跨语言交流的桥梁

    引言: Unicode编码是一种用于表示世界上所有字符的标准编码方式.它解决了字符集兼容性和多语言文本处理的难题,成为实现全球化软件的关键技术.本文将深入探讨Unicode编码的优点与缺点,并介绍它在 ...

  7. NC23051 华华和月月种树

    题目链接 题目 题目描述 华华看书了解到,一起玩养成类的游戏有助于两人培养感情.所以他决定和月月一起种一棵树.因为华华现在也是信息学高手了,所以他们种的树是信息学意义下的. 华华和月月一起维护了一棵动 ...

  8. npm无法安装node-sass 的问题

    安装 node-sass 的问题呈现:4.9.0版本无法下载 Downloading binary from https://github.com/sass/node-sass/releases/do ...

  9. Java 21 虚拟线程如何限流控制吞吐量

    虚拟线程(Virtual Threads)是 Java 21 所有新特性中最为吸引人的内容,它可以大大来简化和增强Java应用的并发性.但是,随着这些变化而来的是如何最好地管理此吞吐量的问题.本文,就 ...

  10. 【Unity3D】人物跟随鼠标位置

    1 游戏对象 ​ 2D动画和人体模型及动画中介绍了 Aniamtion.Animator.人体模型.人体骨骼.人体动画等基础知识,本文将通过 "人物跟随鼠标位置" 案例加强对 Un ...