算法练习-二分查找

public class test1 {

/**

* @param args

*/

/*文字说明

* 需求:在有序数组A中查找1target

* 如果找到返回索引,如果找不到返回-1

* 设n为数组长度;i=0;j=n-1

* 如果i>j,结束查找,没找到

* 设mid=(i+j)/2

* 如果target<A[mid]说明 target在mid的左边

* 所以j=mid-1

* 如果target<A[mid]说明target在mid的右边

* 所以 i=mid+1

* A[mid]=tartget说明找到了,返回mid

* */

public static void main(String[] args) {

// TODO Auto-generated method stub

int []arr={1,2,3,4,5};

System.out.println(Basic(arr,4));

}

public static int Basic(int arr[],int target){

int n=arr.length;

int i=0,j=n-1;

while(i<=j)

{

int mid=i+(j-i)/2;//防止整数溢出

if(target>arr[mid]){

i=mid+1;

}

if(target<arr[mid]){

j=mid-1;

}

if(arr[mid]==target){

return mid;

}

}

return -1;

}

}

相关推荐
We་ct3 分钟前
深度剖析浏览器跨域问题
开发语言·前端·浏览器·跨域·cors·同源·浏览器跨域
风筝在晴天搁浅4 分钟前
字节高频题 小于n的最大数
算法
LabVIEW开发6 分钟前
LabVIEW水力机组空蚀在线监测
算法·labview·labview知识·labview功能·labview程序
身如柳絮随风扬10 分钟前
多数据源切换实战:从业务场景到3种实现方案全解析
java·分布式·微服务
AI科技星12 分钟前
科幻艺术书本封面:《全域数学》第一部·数术本源 第三卷 代数原本(P95-141)完整五级目录【乖乖数学】
算法·机器学习·数学建模·数据挖掘·量子计算
skywalk816312 分钟前
在考虑双轨制,即在中文语法的基础上,加上数学公式的支持,这样像很多计算将更加简单方便,就像现在的小学数学课本里面一样,比如:定x=2*x + 1
开发语言
风筝在晴天搁浅13 分钟前
LeetCode 92.反转链表Ⅱ
算法·leetcode·链表
小书房15 分钟前
Kotlin的by
android·开发语言·kotlin·委托·by
王老师青少年编程27 分钟前
csp信奥赛C++高频考点专项训练之贪心算法 --【贪心与二分判定】:数列分段 Section II
c++·算法·贪心·csp·信奥赛·二分判定·数列分段 section ii
就叫飞六吧31 分钟前
QT写一个桌面程序exe并动态打包基本流程(c++)
开发语言·c++