首页 > 其他分享 >二分查找法(折半查找)day06

二分查找法(折半查找)day06

时间:2024-08-01 20:17:03浏览次数:9  
标签:折半 arr end int day06 mid 查找 front


二分查找(折半查找)
前提:查找的序列必须是有序的,否则无法使用二分查找

    4.二分法查找操作:使用二分法查找有序数组中元素。找到返回索引,不存在输出-1。  分析:二分法查找的前提是数组有序。
    假如有一组数为3,12,24,36,55,68,75,88要查给定的值24.可设三个变量
    front,mid,end分别指向数据的上界,中间和下界,mid=(front+end)/2.
        1)开始令front=0(指向3),end=7(指向88),则mid=3(指向36)。因为mid>x, 故应在前半段中查找。
        2)令新的end=mid-1=2,而front=0不变,则新的mid=1。此时x>mid,故确定应  在后半段中查找。
        3)令新的front=mid+1=2,而end=2不变,则新mid=2,此时a[mid]=x,查找成功。
        4)如要查找的数不是数列中的数,例如x=25,当第三次判断时,x>a[mid],按以上规律,令front=mid+1,即front=3,出现front>end的情况,表示查找不成功。

public class Test4 {
    public static void main(String[] args) {
        int[] arr = {3, 12, 24, 36, 55, 68, 75, 88};

        //定义一个front索引
        int front = 0;
        //定义结束索引end
        int end = arr.length - 1;
        int number = 12;

        boolean flag = true;

        while (front <= end) {
            //算中间元素的索引
            int mid = (front + end) / 2;
            //将查找的元素与中间的元素进行比较
            if (number > arr[mid]) {
                front = mid + 1;
            } else if (number < arr[mid]) {
                end = mid - 1;
            } else {
                System.out.println("找到该元素!元素的索引为:" + mid);
                flag = false;
                break;
            }
        }

        if(flag){
            System.out.println("该序列中不存在该元素!");
        }
    }
}

标签:折半,arr,end,int,day06,mid,查找,front
From: https://www.cnblogs.com/qiwei-bigdata/p/18337412

相关文章

  • Linux文件查找、打包压缩
    一、文件查找1、which/whereis/whatiswhich只能查询命令[[email protected]~]#whichrpmwhereis可以查询命令和配置⽂件的位置[[email protected]~]#whereisrpm[[email protected]~]#whereispasswdwhatis[[email protected]~]#whatisrpm和下⾯命令⼀样的效果,查询rpm命令......
  • 折半插入排序算法思想及代码实现
    折半插入排序(BinaryInsertionSort)是插入排序算法的一种优化版本。插入排序的基本思想是将一个记录插入到已经排序好的有序表中,从而得到一个新的、记录数增加1的有序表。传统的插入排序在寻找插入位置时,采用的是顺序比较的方式,即逐个与有序表中的元素进行比较,直到找到比待插入......
  • 代码随想录算法训练营day01|704. 二分查找,27. 移除元素,977.有序数组的平方
    704.二分查找题目链接:https://leetcode.cn/problems/binary-search/description/本人代码:classSolution{public:intsearch(vector<int>&nums,inttarget){intlow=0,high=nums.size()-1;//此处分情况讨论returnsearchTarget(nums,low,high,tar......
  • 【C++BFS算法 二分查找】2812. 找出最安全路径
    本文涉及知识点C++BFS算法C++二分查找LeetCode2812.找出最安全路径给你一个下标从0开始、大小为nxn的二维矩阵grid,其中(r,c)表示:如果grid[r][c]=1,则表示一个存在小偷的单元格如果grid[r][c]=0,则表示一个空单元格你最开始位于单元格(0,0)。在......
  • AntD单位搜索树两种情况(第一种情况:全局已有数据下过滤、第二种情况:根据输入内容搜索查
    a-tree-select <a-tree-select style="width:260px" v-model:value="formState.userOrgCode" show-search :show-checked-strategy="SHOW_PARENT" :tree-data="TreeData"......
  • 代码随想录算法训练营Day0| LeetCode704: 二分查找
    LeetCode704二分查找先看了一下数组理论基础:数组基础题目链接:704.二分查找啥也没看,凭感觉直接上手:classSolution(object): defsearch(self,nums,target): fornuminnums: ifnum==target: returnnums.index(num) break return-1通过倒是......
  • 用Python实现二进制搜索(二分查找)
    二进制搜索(binarysearch,又称二分搜索)是一种快速有效的搜索方法,用于搜索有序列表中的元素。importmathdefbinary_search(sorted_list,target):"""在有序列表sorted_list中查找目标值target的位置使用二分查找算法"""lower_bound=0#初始......
  • C语言day06(数组、字符数组)
    C语言day06【1】数组1》概念:具有一定顺序的若干变量的集合2》定义格式:存储类型数据类型数组名[元素的个数]例:intarr[5];//定义了一个数组arr,在内存空间中开辟了5个空间来储值在数组中保存的每一条数据都叫(元素)变量数组名:代表数组的首地址(地址常量);数组......
  • CS50x2023 Psets9“财务”。获取股票报价时的“查找”功能问题
    我在此任务中的问题是从查找函数获取任何其他“无”输出。经过几天的战斗,我实现了yt教程中的代码,精确地为1到1,但它仍然给出相同的结果-查找“无”。我不知道我可以在哪里寻找这种行为的根源。下面我附上了我的“quote.html”和@quote应用程序Python代码,用于在本练习中获取......
  • 408 数据结构查找算法
    第7章查找7.1二分查找需求:在有序数组arr中,查找值为target的元素。若找到返回索引下标,否则返回-1算法思路:找中间值,1.如果target<中间值,在左半区间继续查找,即让high=mid-1​ 2.如果中间值<target,在右半区间继续查找,即让low=mid+1​ 3.直到当lo......