有序的无限数组中查找数字

博客主要提及在有序数组中查找元素,且该数组长度为无限。这涉及到特定的查找算法和数据处理方式,在信息技术领域的数据查找场景中有一定应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在一个有序的数组中查找元素,数组长度是无限的

	public int search(int[] n,int dest){
	    int left = 0;
	    int mid = 0;
	    int right = 1;
	    //循环遍历,每次将间隔扩大2倍,直到找到找到比目标值大的元素位置
	    while(n[right] < dest){
	    	left = right;
	    	right *= 2;
	    }
	    //在新的右边界内,使用二分查找法
	    while(left + 1 < right){
	        mid = left + (right - left) / 2;
	        //如果中间位置的数字等于目标值,直接返回中间位置
	        if(n[mid] == dest){
	            return mid;
	        }
	        if(n[mid] < dest){
	            left = mid + 1;
	        } else {
	            right = mid - 1;
	        }
	    }
	    if(n[left] == dest){
	        return left;
	    }
	    if(n[right] == dest){
	        return right;
	    }
	    return -1;
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值