使用相同的随机数组为每个排序

问题描述:

我想使它,所以我生成一个随机数组,但实现只是一个相同的数组(随机顺序)与不同的排序。我有:使用相同的随机数组为每个排序

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-)将数组复制到“灯具”中,并在每次执行排序前复制该灯具。 –

在每次排序前克隆或复制数组,并将克隆传递给排序例程。您可以使用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 - 我怀疑你没有重新克隆数组。看到我更新的答案,我用明确的代码替换了''等''。 –

必须进行初始阵列的副本,以保持相同的数据原件。