思路:建立新数组接收两个数组的元素,把小的元素先写入新数组
package sortTest;
/**
* 对两个有序数组合并排序
* @author Administrator
*
*/
public class Merge {
public static int[] merge(int[] a , int[] b) {
int[] arr = new int[a.length + b.length]; //新数组,用来合并两个数组
int p1 = 0; //p1 指向数组1 的指针
int p2 = 0; //p2 指向数组2 的指针
int i = 0; //新数组arr的起始下标
while(p1 < a.length && p2 < b.length) { //如果其中一个数组遍历完了,则跳出循环
if(a[p1] <= b[p2]) //把两个数组中最小的数先写入arr
arr[i++] = a[p1++];
else
arr[i++] = b[p2++];
}
while(p1 < a.length) arr[i++] = a[p1++]; //如果a数组还没有遍历完,则剩下的数均比b数组中的大,写入arr最后即可
while(p2 < b.length) arr[i++] = b[p2++]; //如果b数组还没有遍历完,则剩下的数均比a数组中的大,写入arr最后即可
return arr;
}
public static void main(String[] args) {
int[] a1 = {1,3,5,7,9};
int[] a2 = {2,4,6,8,10,12};
for(int i : merge(a1 , a2)) {
System.out.println(i);
}
}
}