我正在編寫一個程序來比較不同的排序方法。我隨機生成了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