2017-10-18 71 views
1

我想使它,所以我生成一個隨機數組,但實現只是一個相同的數組(隨機順序)與不同的排序。我有:使用相同的隨機數組爲每個排序

public static void main(String[] args) 
{ 
    int[] array = new int[10]; 
    for(int i = 0; i < array.length; i++) { 
     array[i] = (int)(Math.random()*100);} 

    System.out.println("\nBefore Bubble Sort: "); 
    for (int element : array) 
     System.out.print(element + " "); 

    bubbleSort(array); 


    System.out.println("After Bubble Sort: "); 
    for (int element : array) 
     System.out.print(element + " "); 
    System.out.println("\n"); 

    System.out.println("\nBefore Insertion Sort: "); 
    for (int element : array) 
     System.out.print(element + " "); 

    insertionSort(array); 


    System.out.println("After Insertion Sort: "); 
    for (int element : array) 
     System.out.print(element + " "); 
    System.out.println("\n"); 
} 

與各種相應的代碼(如果需要,我會發布它們)。它的輸出是:

Array Before Bubble Sort: 
2 64 27 1 81 60 72 6 9 82 
Array After Bubble Sort: 
1 2 6 9 27 60 64 72 81 82 

Array Before Insertion Sort: 
1 2 6 9 27 60 64 72 81 82 
Array After Insertion Sort: 
1 2 6 9 27 60 64 72 81 82 

我想要這個陣列2 64 27 1 81 60 72 6 9 82是在之前插入線爲好。從排序排序的排序數組剛剛被放入插入排序,所以它沒有做任何事情。我想我需要爲隨機數組創建一個方法,並且每種方法都調用它?我會怎麼做?或者我會欣賞的任何其他解決方案。如果需要,我將編輯更多信息。

+1

使用['System.arraycopy'](https://docs.oracle.com/javase/8/docs/api/java/lang/System.html#arraycopy-java.lang.Object-int-java。 lang.Object-int-int-)將數組複製到「燈具」中,並在每次執行排序前複製該燈具。 –

回答

2

在每次排序前克隆或複製數組,並將克隆傳遞給排序例程。您可以使用array.clone()Arrays.copyOf(array, array.length)進行復制。

public static void main(String[] args) 
{ 
int[] array = new int[10]; 
    for(int i = 0; i < array.length; i++) { 
    array[i] = (int)(Math.random()*100);} 

    System.out.println("\nBefore Bubble Sort: "); 
    for (int element : array) 
     System.out.print(element + " "); 

    int[] sorted = array.clone(); 
    bubbleSort(sorted); 


    System.out.println("After Bubble Sort: "); 
    for (int element : sorted) 
     System.out.print(element + " "); 
     System.out.println("\n"); 

    System.out.println("\nBefore Insertion Sort: "); 
    for (int element : array) 
     System.out.print(element + " "); 

    sorted = array.clone(); 
    insertionSort(sorted); 


    System.out.println("After Insertion Sort: "); 
    for (int element : sorted) 
     System.out.print(element + " "); 
    System.out.println("\n"); 
} 
+0

好的,謝謝你這個作品。然而,它似乎不是泡沫排序,當我嘗試計數比較和掉期時,它計爲0插入排序交換。所以它「神奇地」被分類而不需要交換,只是打印出排序後的列表。你知道爲什麼嗎? – vee

+0

@vee - 我懷疑你沒有重新克隆數組。看到我更新的答案,我用明確的代碼替換了''等''。 –

0

必須進行初始陣列的副本,以保持相同的數據原件。