二分查找-Java版

    /**
     * * 二分查找算法 * *
     *
     * @param srcArray 有序数组 *
     * @param target 查找元素 *
     * @return srcArray数组下标,没找到返回-1
     */
   public int binarySearch(int[] srcArray, int target){
        int left = 0;
        int right = srcArray.length - 1;
        while(left <= right) {
            int mid = (left + right)/2;
            if(srcArray[mid] == target) {
                return mid;
            }
            else if(srcArray[mid] > target) {
                right = mid - 1;
            }
            else {
                left = mid + 1;
            }
        }
        return -1;
   }  
时间: 2024-10-14 08:51:12

二分查找-Java版的相关文章

二分查找 java代码

二分查找的前提是:你得先排好序,但是排序问题不在讨论. 直接上代码: import java.util.Optional; public class MyArray { public static void main(String[]args) { int[] arr = new int[]{1,2,3}; for (int i = 0; i < arr.length; i++) { System.out.println("arr[" + i + "]=" +

二分查找递归版以及书写递归的注意事项

采用递归的方法实现二分查找. 在一个有序数组list中,从下标1开始,查看target是否在数组中.在的话就返回下标,否则返回0. 思路 1.对线性表排序,通常是由小到大排序. 2.取中间值与目标值比较. 2.1取中间值与目标值比较,若相等,则返回下标,退出函数. 2.2中间值比目标值要大,那么在最小值和中间值之间继续查找,执行2. 2.3中间值比目标值要小,那么在最大值和中间值之间继续查,执行2. 第一版(错误) int recursive_bin_ser(int* list, int len

二分查找JAVA实现

二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好:其缺点是要求待查表为有序表,且插入删除困难.因此,折半查找方法适用于不经常变动而查找频繁的有序列表.首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功:否则利用中间位置记录将表分成前.后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表.重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功. 一.概念 二分查

二分查找 java

算法:当数据量很大适宜采用该方法.采用二分法查找时,数据需是有序不重复的. 基本思想:假设数据是按升序排序的,对于给定值 x,从序列的中间位置开始比较,如果当前位置值等于 x,则查找成功:若 x 小于当前位置值,则在数列的前半段中查找:若 x 大于当前位置值则在数列的后半段中继续查找,直到找到为止. 假设有一个数组 { 12, 23, 34, 45, 56, 67, 77, 89, 90 },现要求采用二分法找出指定的数值并将其在数组的索引返回,如果没有找到则返回 -1.代码如下: packag

快速排序和二分查找(Java)

import java.util.Arrays; public class Main { public static void main(String[] args) { int[] data = {2, 3, 5, 1, 4, 5, 2, 13, 51, 9, 10, 15, 17, 6, 21, 33, 44, 77, 22}; System.out.println(Arrays.toString(data)); quickSort(data, 0, data.length - 1); Sy

二分查找java代码

public int find(long searchKey){ int i; int begin = 0; int end = nElems - 1; while(true){ i = (begin + end) / 2; if (searchKey == a[i]){ return i; } else if (begin > end) { return -1; } else if (searchKey > a[i]) { begin = i + 1; } else if (searchKe

二分查找的探讨

/* 二分查找 普通版 bs(); 求下界 low_bs(); 求上界 up_bs(); */ #include <cstdio> #include <algorithm> using namespace std; //[l,r) int bs(int *T,int l,int r,int v) { int m; while(l<r) { m = l +(r - l) / 2; //注意 >>1 要加括号 if(T[m] == v) return m; if(T[

算法前戏 递归 二分查找 列表查找

一.递归 概念: 函数直接或者间接的调用自身算法的过程,则该函数称为递归函数.在计算机编写程序中,递归算法对解决一大类问题是十分有效的. 特点: ①递归就是在过程或者函数里调用自身. ②在使用递归策略时,必须有一个明显的结束条件,称为递归出口.问题规模相比上次递归有所减少, ③递归算法解题通常显得很简洁,但递归算法解题的效率较低.所以一般不倡导使用递归算法设计程序. ④在递归调用的过程当中系统的每一层的返回点.局部变量等开辟了栈来存储.递归函数次数过多容易造成栈溢出等. 所以一般不倡导用递归算法

数据结构&amp;算法(二)_算法基础之前传(递归、时间复杂度、空间复杂度、二分查找)

什么是算法: 间而言之算法(Algorithm):一个计算过程,解决问题的方法 递归的两个特点: 调用自身 结束条件 递归示例: def func(x): if x==0: print("我的小鲤鱼",end='') else: print("抱着",end='') func(x-1) print("的我",end="") func(5) 递归示例一:我的小鲤鱼 ''' 1 1 2 3 5 8 13 21 34 输出长度为 n