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. 【Docker内容大集合】Docker从认识到实践再到底层原理大汇总

    前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总https://blog.cs ...

  2. 服了,一个ThreadLocal被问出了花

    分享是最有效的学习方式. 博客:https://blog.ktdaddy.com/ 故事 地铁上,小帅无力地倚靠着杆子,脑子里尽是刚才面试官的夺命连环问,"用过TheadLocal么?Thr ...

  3. 20.3 DLL入口函数--《Windows核心编程》

    如果在执行一些与进程或者线程有关的初始化或者销毁工作的时候,需要 DllMain.如果只需要创建一个包含资源的DLL,不需要这个函数. B00L WINAPI DllMain(HINSTANCE hi ...

  4. ABC 306

    前三题过水. D \(dp[i][j]\) 表示吃完前 \(i\) 个菜,胃的状况为 \(j\)(\(0\) 是健康,\(1\) 是不好)所获得的最大美味值. E 暴力的平衡树.用 multiset ...

  5. 长沙IT技术圈百万年薪大佬?是否存在?

    引子 不知不觉,IT技术圈开始流传起"百万年薪"的故事,有人问我,长沙有百万大佬么?其实我也不知道. 一 背景 长沙自古以来就是文风鼎盛之地,在今天也同样如此. 目前长沙有211. ...

  6. 【Android】截图案例

    1 工作空间 2 代码 ​ MainActivity.java package com.zhyan8.demo; import android.graphics.Bitmap; import andr ...

  7. Js中的逻辑运算符

    Js中的逻辑运算符 JavaScript中有三个逻辑运算符,&&与.||或.!非,虽然他们被称为逻辑运算符,但这些运算符却可以被应用于任意类型的值而不仅仅是布尔值,他们的结果也同样可以 ...

  8. java类初始化及代码块加载顺序连根拔起

    说明 相信很多人对于java中父子继承关系中,子类实例化调用过程中,代码块的执行顺序都容易忘记或搞混,尤其是java初级笔试题或面试题最容易出这类题目,让人恨得牙痒痒!!! 本文就一次性将其连根铲除, ...

  9. 一秒出图?SDXL-Turbo实时AI绘画整合包下载

    SDXL Turbo是一种快速生成的AI构图模型,它基于一种称为对抗性扩散蒸馏的新训练方法,该方法允许在1到4个步骤中以高图像质量对大规模基础图像扩散模型进行采样,并将其与对抗性损失相结合,以确保即使 ...

  10. Taurus.MVC WebMVC 入门开发教程2:一个简单的页面呈现

    前言: 在上一篇中,我们了解了如何下载.配置和运行 Taurus.MVC WebMVC 框架. 现在,让我们开始编写一个简单的页面并进行呈现. 步骤1:创建控制器 首先,我们需要创建一个控制器来处理页 ...