小算法:合并两个有序数组,合并之后仍然有序

 1 /**
 2      * 合并两个有序数组,合并后仍然有序
 3      * @param a 要合并的数组A
 4      * @param b 要合并的数组B
 5      * @param c 合并后的数组C
 6      */
 7     public static void merge(int a[] ,int b[],int c[]){
 8         int lengthA = a.length;
 9         int lengthB = b.length;
10
11         int indexA = 0;
12         int indexB = 0;
13         int indexC = 0;
14
15         while(indexA < lengthA && indexB < lengthB){
16             if(a[indexA] < b[indexB]){
17                 c[indexC++] = a[indexA++];
18             }else{
19                 c[indexC++] = b[indexB++];
20             }
21         }
22
23         while(indexA < lengthA){
24             c[indexC++] = a[indexA++];
25         }
26         while (indexB < lengthB) {
27             c[indexC++] = b[indexB++];
28         }
29     }

小算法:合并两个有序数组,合并之后仍然有序

时间: 2024-08-17 13:18:11

小算法:合并两个有序数组,合并之后仍然有序的相关文章

算法--两个有序数组合并

两个有序数组合并 关键点:从后往前进行比较,这样保证数组A有用的部分不会因为在合并的过程中覆盖掉 第15节 有序数组合并练习题 有两个从小到大排序以后的数组A和B,其中A的末端有足够的缓冲空容纳B.请编写一个方法,将B合并入A并排序. 给定两个有序int数组A和B,A中的缓冲空用0填充,同时给定A和B的真实大小int n和int m,请返回合并后的数组. Java (javac 1.7) 代码自动补全 1 import java.util.*; 2 3 public class Merge {

两个有序数组合并成一个有序数组

两个有序数组合并成一个有序数组 1. 题目描述 数组a是有序的,数组b也是有序的,如何高效地合并它们成一个数组,并且新数组也是有序的? 2. 从后往前合并 这道题目是师兄电面阿里的时候,问到的一道题目.现在我们来说一下解法~ 假设数组a足够长,可以在数组a上合并二者.我们的解法基本思想就是从后往前合并数组. 每次合并的时候,都要比较a和b当前数组的大小,取较大的值后移,注意一定要是后移! 为什么从后往前呢?其实就是为了方便后移,因为较大的一定是在后面的. 程序如下: #include<iostr

java 有序数组合并

有序数组合并,例如: 数组 A=[100, 89, 88, 67, 65, 34], B=[120, 110, 103, 79, 66, 35, 20] 合并后的结果 result=[120, 110, 103, 100, 89, 88, 79, 67, 66, 65, 35, 34, 20] 程序: import java.util.Arrays; public class Test { public static void main(String[] args) { int[] a = {

java 合并两个byte数组

//java 合并两个byte数组 public static byte[] bytesMerger(byte[] byte_1, byte[] byte_2) { byte[] byte_3 = new byte[byte_1.length + byte_2.length]; System.arraycopy(byte_1, 0, byte_3, 0, byte_1.length); System.arraycopy(byte_2, 0, byte_3, byte_1.length, byte

两个byte[]数组合并

//java 合并两个byte数组 public static byte[] byteMerger(byte[] byte_1, byte[] byte_2){ byte[] byte_3 = new byte[byte_1.length+byte_2.length]; System.arraycopy(byte_1, 0, byte_3, 0, byte_1.length); System.arraycopy(byte_2, 0, byte_3, byte_1.length, byte_2.l

两个有序数组合并算法

有两个有序数组A和B,如果把A和B合并起来到C中,具体算法如下: public static int [] MergeArray(int[] ArrayLeft, int[] ArrayRight)// { int length = ArrayLeft.Length + ArrayRight.Length; int[] ArrayMerge = new int[length]; int i = 0; int j = 0; while (i < ArrayLeft.Length &&

算法 - 两个有序数组合并成一个有序数组

//两个有序数组的合并函数 public static int[] MergeList(int a[],int b[]) { int result[]; if(checkSort(a) && checkSort(b)) //检查传入的数组是否是有序的 { result = new int[a.length+b.length]; int i=0,j=0,k=0; //i:用于标示a数组 j:用来标示b数组 k:用来标示传入的数组 while(i<a.length &&

88. Merge Sorted Array【leetcode】算法,java将两个有序数组合并到一个数组中

88. Merge Sorted Array Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note:You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2. The n

两个有序数组合并为一个有序数组

突然想到了这个算法,记得以前看过,但是没写,怕自己会写不出这个算法,于是就把它用JAVA写出来,呵呵. 思想:先依次比较两个数组,按照小的就传入新的数组.当这次比较完之后可能有一个数组的长度很长,留下一些数组,然后在新数组的末尾插入即可. 代码: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 class ArraySort{ //两个有序数组

算法有序数组合并---在空间足够的情况下,进行O(n)的合并 并且移动次数最小

最近看一本书上有一个面试题,  原题目是 有两个递增数组 A1 A2,   A1的内存空间足够长, 现在要求合并 A2到A1,并且要求移动次数最小 ,面试的时候 我们尽量要以  最高效的方式完成 ,下面是此题  O(n)解法. ///合并 void MergeArray(int *arrA1,int *arrA2,int nLenA1,int nLenA2) { if(!arrA1||!arrA2) return ; //合并后的尾部 int *pBehandA1=(arrA1+nLenA1-1