2014-07-23 67 views
0

嗨,我是新的節目,目前停留在試圖讓程序按升序顯示輸出排列陣列,升序排列3

兩個陣列,給出

array1={1,3,5,7} // odd numbers 

array2={2,4,6,8} // even numbers 

Output= 1,2,3,4,5,6,7,8 

輸出將按升序排列。如何在java中爲此輸出編寫程序。

+3

提供要求一度被認爲是[題外話](HTTP://計算器。 COM /幫助/切合主題)。它仍然[現在正在辯論](http://meta.stackexchange.com/questions/215596/are-code-questions-without-an-attempt-now-on-topic),許多人認爲這是粗魯的。 –

+1

將這兩個數組放入一個數據結構中並使用基本的排序算法。 –

回答

-1

加入兩個數組:

 import java.util.ArrayList; 
     import java.util.Arrays; 
     import java.util.List; 
     public class Main { 
     public static void main(String args[]) { 
     Int a[] = { 1,2,3 }; 
      Int b[] = { 4,5 }; 
      List list = new ArrayList(Arrays.asList(a)); 
      list.addAll(Arrays.asList(b)); 
      Object[] c = list.toArray(); 

    } 
} 

安排一個陣列上升:

   for (int j = 0; j<array.length; j++) { 
       for (int k = 0; k < array.length; k++){ 
        if (array[j] < array[k]) { 
        int buffer = array[j]; 
        array[j] = array[k]; 
       array[k] = buffer; 
       } 
      } 
      } 
1

使用addAll方法,並結合兩個數組到ArrayList排序使用Collections.sort方法

如果你想結果在數組中可以使用toArray方法從轉換到array

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.Collections; 
import java.util.List; 

class MainDemo { 
    public static void main(String[] args) { 
     Integer[] array1 = { 1, 3, 5, 7 }; 
     Integer[] array2 = { 2, 4, 6, 8 }; 

     List<Integer> mylist = new ArrayList<Integer>(); 

     mylist.addAll(Arrays.asList(array1)); 
     mylist.addAll(Arrays.asList(array2)); 

     Collections.sort(mylist); 

     // Print the sorted list.... 
     for (Integer x : mylist) { 
      System.out.println(x+" "); 
     } 

     // You can also convert back to array 
     Integer[] FinalArray = mylist.toArray(new Integer[mylist.size()]); 
     for (int i = 0; i < FinalArray.length; i++) { 
      System.out.println(i); 
     } 

    } 
} 

輸出:

1 2 3 4 5 6 7 8 
0

方法1-甲簡單的解決方案是通過一個拷貝來創建尺寸(M + N)和一個的輸出陣列中的所有陣列給它。最後,使用任何O(nLogn)排序算法對輸出數組進行排序。這種方法需要O((m + n)Log(m + n))時間。方法2-你可以使用Mean Heap在O((m + n)* Log(m + n))時間中合併數組。以下是詳細的算法。

  1. 創建大小爲(m + n)的輸出數組。
  2. 創建一個大小爲k的分鐘堆,並將所有數組中的第一個元素插入堆中
  3. 重複以下步驟(m + n)次。 a)從堆中獲取最小元素(最小值總是在根處)並將其存儲在輸出數組中。 b)將堆根替換爲從中提取元素的數組中的下一個元素。如果數組沒有更多的元素,則將root替換爲無限。替換根後,堆樹。

其中m和n是給定的兩個陣列的大小。

+1

這是正確的答案,但我不認爲它的水平對於手頭的問題是明智的,因爲OP說他們是編程新手。任何關於大O的提及都可能令人困惑,儘管它是準確的。 – ThePerson

0

您可以將兩個數組合併成一個,然後使用Arrays.sort()

int array1={1,3,5,7}; 

int array2={2,4,6,8}; 
int array[]=new int[10]; //You can change the 10 to max 
int len=array1.length+array2.length; 
int j=0,k=0; 
for(int i=0;i<len;i++) 
{ 
    if(j<4) 
    array[i]=array1[j++]; 
    else array[i]=array2[k++]; 
} 
Arrays.sort(array,0,len); 

而不顯示任何努力輸出 = 1,2,3,4,5,6,7,8