欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

二分查找与循环查找的比较

程序员文章站 2022-03-01 18:43:08
...

循环查找,顾名思义,就是通过一遍遍的循环去查找对应的数,这样很费时,而且每循环一次要比较一次。

代码:

 

 for(int i = 0;i<a.length;i++) {
        	if(SearchNumber == a[i]) {
        		System.out.println("找到了你输入的数字:");
        		long end = System.currentTimeMillis();
        		System.out.println("循环查找用时:"+(end-start)+"ms");
        		System.exit(0);
        	}
        }

二分查找的意思是设定一个low值初始时对应数组的第一个元素的下标,high对应的是数组最后一个元素的下标,我们取中间值mid= (high+low)/2,每次拿需要找的数字与mid比较,如果小于mid,那么说明查找的数字是在low到mid之间的,那么更新high的值为mid-1,如果大于mid,那么说明查找的数字在mid到high之间,那么更新low的值,low=mid+1,,在更新low或者high的值之后,mid的值也更新了,就这样一直在一半的区间寻找,效率会更高。

代码:

int low = 0;
		int high = a.length-1;
		Scanner input = new Scanner(System.in);
		System.out.print("输入需要查找的数字:");
        int SearchNumber = input.nextInt();
        while(high>=low)
        {
        	int mid = (low + high)/2;
        	if(SearchNumber<a[mid])   //查找的元素比中间值小
        	{
        		high = mid-1;
        	}else if(SearchNumber>a[mid])  //查找的元素比中间值大
        	{
        		low = mid + 1;
        	}
        	else    //找到了
        	{
        		System.out.println("找到了输入的数字");
        		long end = System.currentTimeMillis();
                System.out.println("二分查找用时:"+(end-start)+"ms");
        		System.exit(0);      //找到以后终止查找
        	}
        }
        System.out.println("没找到输入的数字"); 

比较一下这两个算法的效率

二分查找与循环查找的比较

二分查找与循环查找的比较

因为我是用的是随机数,所以将结果相差不多,在我们知道的数组序列时,我们使用二分查找是比较好的。