输入一个数组后,将它排序变成有序后,在用二分法去查找元素对应的下标。

1.首先二分法只能用于有序数组,其次二分法适合于大数据的查找,可以节约很多时间。

2.它的原理就是利用中间值去不断接近我们需要的值,例如 0,2,4,6,7;我们要找2的下标我们先把两端的下标拿出来,再算出中间的下标 2对应的元素4,用中间的元素去与我们要的值比较,因为2<4,那么下次我们把中间的下标赋值右端且减一,反之就赋给左端且加一。

3.

import java.util.Arrays;
import java.util.Scanner;
public class ISSA {

    public void sort(int[] arr) {//排序
    	for(int i=0;i<arr.length;i++)
    	{
    		for(int j=1;j<arr.length;j++)
    		{
    			if(arr[j-1]>arr[j])
    			{
    				int temp=arr[j-1];
    				arr[j-1]=arr[j];
    				arr[j]=temp;
    			}
    		}
    	}
    }
	@SuppressWarnings("resource")//关闭警告,supress:压抑
	public static void main(String[] args){
		int[] arr=new int[5];
		Scanner sc = new Scanner(System.in);
			for(int i=0;i<5;i++) { 
				arr[i]=sc.nextInt();
			}
		ISSA S=new ISSA();//相当与引用函数
		S.sort(arr);//
		System.out.print("新数组:");
		System.out.println(Arrays.toString(arr));
		ISSA F=new ISSA();
		F.find(arr);
	}	
	@SuppressWarnings("resource")
	public void find(int[] arr) {//二分法的实现
		System.out.print("请输入要查找的值:");
    	Scanner sc=new Scanner(System.in);
    	int x=sc.nextInt();
    	int left=0,right=arr.length;
    	while(left<=right)
    	{
    		int mid=(left+right)/2;
    		if(x<arr[mid])
              right=mid-1;
    		 if(x>arr[mid])
    		  left=mid+1;
    		 if(x==arr[mid])
    		  {
    			System.out.println(mid);
    			break;
    		  }
    	}
    	if(right<=left)
    	{
    		System.out.println("找不到");
    	}
    }
 }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

i s s a

感谢大佬支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值