【Java笔试题】合并有序数组
2016-11-23 06:55
337 查看
1、题目
将两个有序数组合并成一个有序数组。例如,arr1 = {-1,1,3},arr2 = {0,2,4},则合并后的数组为arr = {-1,0,1,2,3,4}。
2、Java代码
将两个有序数组合并成一个有序数组。例如,arr1 = {-1,1,3},arr2 = {0,2,4},则合并后的数组为arr = {-1,0,1,2,3,4}。
2、Java代码
public class TwoArrIntoOne { public static void main(String args[]) { int a[] = {-1,1,3}; int b[] = {0,2,4}; int c[] = MergeList(a, b); if (c != null) print(c); else System.out.println(""); } 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 && j < b.length) if (a[i] <= b[j]) { result[k++] = a[i++]; } else { result[k++] = b[j++]; } //以下两个while循环是用来保证两个数组比较完之后剩下的一个数组里的元素能顺利传入 while (i < a.length) result[k++] = a[i++]; while (j < b.length) result[k++] = b[j++]; return result; } else { System.out.print("非有序数组,不能进行排序!"); return null; } } public static boolean checkSort(int a[]) { //检查数组是否是顺序存储的 boolean change = true; for (int i = 0; i < a.length - 1 && change; i++) { for (int j = i + 1; j < a.length; j++) if (a[j - 1] > a[j]) return false; else change = false; } return true; } public static void print(int b[]) { //打印函数 for (int i = 0; i < b.length; i++) { System.out.print(b[i] + " "); } } }
相关文章推荐
- 百度笔试题合并a[0..mid]和a[mid+1,n-1],其中这两个数组分别有序
- Java合并数组的两个子有序段
- 合并两个有序数组Java实现
- JAVA合并两个有序数组并去除重复元素。
- java将两个有序数组合并成一个有序数组
- Java数据结构与算法之有序数组的插入和合并
- java之简单的合并有序数组
- 两个有序数组的合并排序,Java代码实现,并去重复,考虑空间利用率问题
- 笔试题:有序数组的合并
- java实现两个有序数组的合并
- iOS 笔试题~两个有序数组合并成一个有序数组
- 合并有序数组的实现(java与C语言)
- java实现把两个有序数组合并到一个数组的实例
- 两个有序数组的合并排序,Java代码实现,并去重复,考虑空间利用率问题
- java实现把两个有序数组合并到一个数组
- Java将两个有序链表合并为一个有序链表、将两个有序数组合并成一个有序数组
- Java合并两个有序数组
- 2012百度实习生笔试之合并两个有序数组
- 算法题:合并N个长度为L的有序数组为一个有序数组(JAVA实现)
- 15、合并两个有序数组,不另外开辟空间 JAVA