搜索数组10次,并计算每次搜索的时间

时间:2015-02-08 19:13:46

标签: java loops binary-search linear-search

我想创建一个包含1000万个数字的数组,数量从1千万到1千万。我正在使用循环来填充数组(增量为1)。现在我想用第二个数组搜索第一个数组10次(创建一个循环搜索10次)(例如int arr2 [] = {10,20,.....}。然后我想计算每次搜索所花费的时间,平均值和标准差,然后将结果打印在表格中。 我将用" \ t"打印的表格。 这就是我到目前为止所做的:

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 第1次运行第2次运行.....第10次运行Avg标准开发。 x ms y ms z ms av ms无论是什么

如何调整代码以产生所需的输出。

我提前为这么长的问题道歉,我希望有人可以帮助我 谢谢

1 个答案:

答案 0 :(得分:0)

简单地说,你的代码有很多问题。第一件事是它在我的计算机上不起作用(根据你粘贴到SO上的内容,甚至不会编译)。

所以,我重写了它,因为我无法对正在发生的事情做出正面或反面。我还包括了一些我希望有用的评论。

(from .... join ....
WHERE db.Users.ID == Customers.AccountOwnerID
select ...)