两个有序数组合并成一个有序数组
2015-04-27 18:06
127 查看
public class ArraySort { public static void main(String[] args) { int[] a = {1,3,4}; int[] b = {2,3,5,6}; int[] c = mergeArray(a, b); for(int n : c){ System.out.print(n+" "); } } //合并数组 public static int[] mergeArray(int[] a , int[] b){ int result[] = new int[a.length + b.length]; if(checkSort(a) && checkSort(b)){ //说明ab数组都是有序的数组 //定义两个游标 int i=0,j=0,k=0; while(i<a.length && j<b.length){ if(a[i] <= b[j]){ result[k++] = a[i++]; }else{ result[k++] = b[j++]; } } while(i < a.length){ //说明a数组还有剩余 result[k++] = a[i++]; } while(j < b.length){ result[k++] = b[j++]; } } return result; } //检查一个数组是否是有序的 // 1 2 3 public static boolean checkSort(int[] a){ boolean flag = false;//默认不是有序的 for(int i=0;i<a.length-1;i++){ if(a[i] > a[i+1]){ //说明不是有序的 flag = false; break; }else{ flag = true; } } return flag; } }
转自:http://blog.csdn.net/shenshen123jun/article/details/21657685
<pre name="code" class="java">package com.bi;/*** 两个有序数组合并成一个有序数组* */public class ArraySortTest {public static void main(String args[]){int[] n1= {1,3,5,6};int[] n2 = {2,3,4,9,0};int[] n=mergerArray(n1,n2);for(int a:n){System.out.print(a+" ");}}public static int[] mergerArray(int[] n1,int[] n2){int[] result = new int[n1.length+n2.length];if(checkSort(n1)!=true){sort(n1);}else if(checkSort(n2)==false){sort(n2);}int i=0,j=0,k=0;while(i<n1.length && j<n2.length){if(n1[i]>=n2[j]){result[k++]=n2[j++];}else{result[k++]=n1[i++];}}while(i<n1.length){result[k++]=n1[i++];}while(j<n2.length){result[k++]=n2[j++];}return result;}public static boolean checkSort(int[] a){boolean flag = true;for(int i=0;i<a.length-1;i++){if(a[i]>a[i+1]){flag = false;break;}}return flag;}public static int[] sort(int[] a){for(int i=0;i<a.length;i++){for(int j=i+1;j<a.length;j++){if(a[i]>a[j]){int temp = a[i];a[i]=a[j];a[j]=temp;}}}return a;}}最开始我用for循环合并数组,发现两个数组长度不一致,导致合并的数组少数,所以得用while循环判断数组的长度
相关文章推荐
- 两个无序的数组 如何进行合并 为一个有序的数组
- 两个有序的数组,合并成一个有序的数组
- 两个有序数组合并为一个有序数组
- 算法面试题——两个有序数组,将一个数组放入另一个空间很大的数组,要求合并之后依然有序,时间复杂度要求最小,不使用额外的数组。
- 【leetcode】Merge Sorted Array(合并两个有序数组到其中一个数组中)
- 算法 - 合并两个有序数组为一个有序数组
- 两个有序数组合并成一个有序数组
- 两个有序数组合并为一个有序数组
- 将两个整型数组有序合并成一个数组
- 两个有序数组合并成一个有序数组
- 两个有序数组合并为一个有序数组
- 将两个排好序的数组,合并到另外一个数组中,并且合并之后的数组也是有序的。
- Java将两个有序链表合并为一个有序链表、将两个有序数组合并成一个有序数组
- 两个有序数组合并为一个有序数组
- 将两个排好序的数组,合并到另外一个数组中,并且合并之后的数组也是有序的。
- 将两个数组A和B合并为一个有序的C数组
- 两个有序数组合并为一个有序数组
- 两个有序数组合并成一个有序数组
- 两个有序数组合并为一个及归并排序实例
- 合并两个有序数组为一个有序数组