wait 发表于 2015-12-25 21:44:18

如何把三个有序数组合并成一个有序数组

import java.util.PriorityQueue;

class ArrayNode implements Comparable<ArrayNode>
{
      private int arr[];
      private int index;

      public ArrayNode(int arr[], int index)
      {
                this.arr = arr;
                this.index = index;
      }

      public int compareTo(ArrayNode arr)
      {
                if (this.arr == arr.arr)
                        return 0;
                else if (this.arr < arr.arr)
                        return -1;
                else
                        return 1;
      }

      public int[] getArr()
      {
                return arr;
      }

      public int getIndex()
      {
                return index;
      }
      
      public boolean empty()
      {
                return arr.length-1==index;
      }
      
}
public class Test
{
      public static int[] mergeArrays(int[][] arr)
      {
                if(arr==null |arr.length==0)
                        return null;
                PriorityQueue<ArrayNode> queue = new PriorityQueue<ArrayNode>();
                int count=0;

                for(int[] i: arr)
                {
                        queue.add(new ArrayNode(i,0));
                        count+=i.length;
                }
               
                int result[] = new int;
                int resultIndex=0;
               
                while(!queue.isEmpty())
                {
                        ArrayNode an = queue.poll();
                        result=an.getArr();
                        if(!an.empty())
                              queue.add(new ArrayNode(an.getArr(), an.getIndex()+1));
                }
                return result;
      }

      public static void main(String[] args) {
                int[] arr1 = { 1, 5, 9 };
                int[] arr2 = { 2, 6, 10 };
                int[] arr3 = { -1, 3, 7, 12 };
                int[] arr[] = new int[][] { arr1, arr2, arr3 };
                int[] result = mergeArrays(arr);
                for(int i:result)
                        System.out.print(i+" ");
      }
}

查看更多请关注微信公众号:猿媛之家


页: [1]
查看完整版本: 如何把三个有序数组合并成一个有序数组