我正在编写一个程序来比较不同的排序方法。我随机生成了100,000个整数并将这些数据存储到一个数组中。我想将相同的数组应用于不同的排序方法以进行比较。 (我认为为每种方法创建类可能会解决我的问题,但我不想创建太多的类)。所以我决定在这个类下创建一个名为Sorts的类和一些排序函数。我想我的排序阵列重置为未排序,以便将相同的数组应用于不同的排序方法。谁能告诉我如何?如何重新排序的数组在Java中未排序?
生成数据:
int size = Integer.parseInt(br.readLine());
int [] data = new int[size];
for (int i = 0; i< size; i++){
data[i] = (int)(Math.random()*(10*size));
System.out.print(data[i]+" ");
}
创建对象:
Sorts sort = new Sorts(size, data);
调用:
switch(index){
case "1" :
System.out.print("\nYou select bubble sort\n");
sort.bubbleSort();
break;
case "2" :
System.out.print("You select quick sort\n");
sort.quickSort();
break;
我的类:
class Sorts{
private int size;
private int data[];
Sorts(int size, int [] data){
this.size = size;
this.data = data;
}
protected void bubbleSort(){
int temp = 0;
for (int i = 0; i< (data.length-1); i++){
for (int j = 0; j<(data.length-1);j++){
if(data[j]>data[j+1]){
temp = data[j];
data[j] = data[j+1];
data[j+1]= temp;
}
}
}
printResult();
}
protected void quickSort(){
}
protected void resetData(){
}
}
以及你可以做一个原始数组的副本,并对其进行排序。或谷歌knuth洗牌。 – e4c5
你最好的选择是生成原始数组。然后复制数组并将其传递给排序算法。你可以尝试跟踪原始位置,但是这看起来像更多的开销'System.arrayCopy(...)' – KevinO
在使用它排序之前创建一个未排序数组的副本: sortedArray = new int [unsortedArray.length]; System.arraycopy(unsortedArray,0,sortedArray,0,unsortedArray.length); – Aditya