1
我想創建一個1000萬的數字從1到1000萬的數組。我正在使用循環來填充數組(1的增量)。現在我想用第二個數組數組搜索第一個數組10次(創建一個循環來搜索10次)(例如int arr2 [] = {10,20,...})然後我想計算時間所花費的每一次檢索,平均值和標準偏差,然後打印出結果在表 表我只是用「\ t」的 打印這是我到目前爲止有:搜索數組10次,並計算每次搜索的時間
public class LinearBinearySearch {
public static void main(String[] args) {
System.out.println("By linear search:\n" + check[k] + " found at index " + found +"\t");
System.out.println("Table below shows result:");
System.out.print("First run\tSecond run\tThird run\tFourth run\tFifth run\tSixth run\tSeventh run\tEight run\tNinth run\tTenth run\tAverage \tStandard deviation\n");
arrPoplte();
linSrch();
loopCheck();
}
static int i = 0;
static int k = 0;
static int[]Arr = new int[10000000];
static int[]check = {500, 10000, 100000, 1000000, 5000000, 7000000, 10000000};
public static void loopCheck(){
}
public static void arrPoplte(){
for(int i = 0; i < Arr.length; i ++){
Arr[i] = i + 1;
}
}
static int found = 0;
static long start;
static long end;
public static void linSrch(){
long sum = 0;
long sumSquare = 0;
for(int c = 0; c < 10 ; c++){
start = System.nanoTime();
while(Arr[i]<check.length){
if(Arr[i]==check[i])
System.out.print(Arr[i]);
end = System.nanoTime();
sum += end - start;
sumSquare += Math.pow(end - start, 2);
}
System.out.print((end - start) +"\t\t");
}
double average = (sum * 1D)/10;
double variance = (sumSquare * 1D)/10 - Math.pow(average, 2);
double std = Math.sqrt(variance);
System.out.print(average +"\t\t" + std + "\n");
但是1.我認爲它的代碼太多,2.我無法循環訪問第二個數組以使用第一個數值
這是我期望的輸出: 500被發現在任何索引 1st ru n第二輪運行.............第十輪運行平均標準開發。 x ms y ms z ms av ms無論它是什麼
如何調整我的代碼以產生所需的輸出。
我提前道歉了這麼長的問題,我希望有人能幫助我 謝謝
請縮進您的代碼以使其可讀,即使由您。遵守Java命名約定:變量以小寫字母開頭,使用整個單詞:「populateArray」而不是「arrPoplte」,「linearSearch」而不是「linSrch」。這聽起來可能不重要,但它非常重要。如果你的大腦必須翻譯所有內容並尋找開放和關閉的大括號,它就不能專注於邏輯。 – 2015-02-08 19:26:48
謝謝JB Nizet,我在這方面有點新鮮。我會做到這一點,並重新發布。希望你能幫助我 – 2015-02-08 19:36:54
好的。只需花費10分鐘就能重新格式化代碼,Eclipse甚至可以嘗試編譯它。搜索功能也有問題,不僅僅是打印系統... – ifly6 2016-02-22 04:28:31