首页 > 编程语言 >非递归的方式实现二分查找算法

非递归的方式实现二分查找算法

时间:2022-10-01 10:33:17浏览次数:51  
标签:二分 arr target 递归 int mid 查找 100

  • 简介
二分查找法的运行时间为对数时间O(㏒₂n) ,即查找到需要的目标位置最多只需要㏒₂n步,假设从[0,99]的队列(100个数,即n=100)中寻到目标数30,则需要查找步数为㏒₂100 , 即最多需要查找7次( 2^6 < 100 < 2^7)
  • 代码实现
public class BinarySearchNoRecur {

public static void main(String[] args) {
//测试
int[] arr = {1,3, 8, 10, 11, 67, 100};
int index = binarySearch(arr, 100);
System.out.println("index=" + index);//
}

//二分查找的非递归实现
/**
* @param arr 待查找的数组, arr是升序排序
* @param target 需要查找的数
* @return 返回对应下标,-1表示没有找到
*/
public static int binarySearch(int[] arr, int target) {
int left = 0;
int right = arr.length - 1;
while(left <= right) { //说明继续查找
int mid = (left + right) / 2;
if(arr[mid] == target) {
return mid;
} else if ( arr[mid] > target) {
right = mid - 1;//需要向左边查找
} else {
left = mid + 1; //需要向右边查找
}
}
return -1;
}

}



标签:二分,arr,target,递归,int,mid,查找,100
From: https://blog.51cto.com/chniny/5728149

相关文章

  • 如何查找BAPI
    干货铺QQ群号:834508274有人问怎么找BAPI的问题,这里说一下。文章最早是发在博客里的,2014年写的,略作调整这里发一下,依然适用:​​http://blog.sina.com.cn/s/blog_c0978c9b0102......
  • 用递归函数和栈操作逆序栈
    用递归函数和栈操作逆序栈作者:Grey原文地址:博客园:用递归函数和栈操作逆序栈CSDN:用递归函数和栈操作逆序栈题目描述请设计一个算法实现逆序栈的操作,但是只能用递归函......
  • linux中如何查找一个文件夹的大小呢?
     下文笔者将讲述linux中查看文件夹大小的方法,如下所示:  1、(方法一)ls-lht会列出当前目录下每个文件的大小,同时也会给出当前目录下所有文件大小总和    ......
  • 方法、递归
    方法什么是方法方法的定义和调用packagemethod;publicclassDemo1{publicstaticvoidmain(String[]args){Strings=sayHello();Sy......
  • 复习+学习 递归
    我们继续递归的一个问题,有闭包没有递归怎么能行第一个递归的案例就是用递归求阶乘,这应该是典中典了吧<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8">......
  • 19.JS的标签查找
    1.getElementById(通过ID查找)2.getElementsByClassName(通过类名查找)3.getElementsByTagName(通过标签名查找)4.getElementsByName(通过Name属性查找)例:document.get......
  • 分享一次查找GfxDriver内存暴涨的经历
    前言网上有很多有关内存的优秀文章(比如《Unity游戏内存分布概览》),看完后收益颇多,总感觉对内存(比如PSS的分布)已经了如指掌。直到最近遇到游戏中播放奥义导致GfxDriver内......
  • 【树结构】【递归】【CTE】【PostgreSQL 】
    1表结构oid、pid为父子结构2代码点击查看代码WITHRECURSIVEfas(SELECT*FROMwg_formulaWHEREoid=1UNIONallSELECTwg_formula.*FROMwg_formul......
  • 递归
    递归A方法调用B方法,我们很容易理解!递归就是:A方法调用A方法!就是自己调用自己利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一......
  • 2022“杭电杯”中国大学生算法设计超级联赛(3)-K - Taxi -曼哈顿+二分
    K-Taxi题意开始给你n个点每个点的坐标\((x_i,y_i)\),权值\(w_i\),一共q次询问,每次询问给你一个点(qx,qy),求该点到前面某个点的距离的最大值是多少。两个点之间的距离定义......