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循环判断数组的长度