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

来源:互联网 发布:护士幻灯片制作软件 编辑:程序博客网 时间:2024/05/21 22:37
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循环判断数组的长度
                                             
0 0
原创粉丝点击