Java数据结构与算法:查找算法之二分查找

这篇具有很好参考价值的文章主要介绍了Java数据结构与算法:查找算法之二分查找。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Java数据结构与算法:查找算法之二分查找

大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,欢迎回到本专栏。在这个冰冷的季节里,我们将一同探讨Java中一种高效的查找算法——二分查找。让我们点燃知识的火花,一同解锁这个查找奇迹的秘密!

二分查找简介

二分查找,也称为折半查找,是一种高效的查找算法。但前提是必须作用在有序数组上。该算法的核心思想是通过每次查找,将待查找范围减半,直到找到目标元素为止。

二分查找的基本步骤

  1. 确定查找范围: 初始化左右边界,确定待查找范围。

  2. 计算中间位置: 计算左右边界的中间位置,即(left + right) / 2

  3. 比较中间元素: 将中间位置的元素与目标元素进行比较。

    • 如果中间元素等于目标元素,查找成功,返回位置。

    • 如果中间元素大于目标元素,说明目标元素可能在左半边,更新右边界。

    • 如果中间元素小于目标元素,说明目标元素可能在右半边,更新左边界。

  4. 重复操作: 重复步骤2和步骤3,直到找到目标元素或左边界大于右边界,查找失败。

二分查找Java实现

下面是一个简单的Java代码示例,演示了如何使用二分查找在有序数组中查找目标元素:

public class BinarySearch {
    public static void main(String[] args) {
        int[] array = {1, 3, 5, 7, 9, 11, 13, 15};

        // 要查找的目标元素
        int target = 7;

        // 执行二分查找
        int result = binarySearch(array, target);

        // 输出查找结果
        if (result != -1) {
            System.out.println("目标元素 " + target + " 在数组中的位置是:" + result);
        } else {
            System.out.println("目标元素 " + target + " 不存在于数组中。");
        }
    }

    // 二分查找算法实现
    static int binarySearch(int[] arr, int target) {
        int left = 0;
        int right = arr.length - 1;

        while (left <= right) {
            int mid = left + (right - left) / 2;

            // 目标元素在左半边
            if (arr[mid] > target) {
                right = mid - 1;
            }
            // 目标元素在右半边
            else if (arr[mid] < target) {
                left = mid + 1;
            }
            // 找到目标元素
            else {
                return mid;
            }
        }

        // 目标元素不存在
        return -1;
    }
}

二分查找的时间复杂度

二分查找的平均时间复杂度为O(log n),其中n是待查找序列的长度。相较于线性查找,二分查找更适用于大型有序数组的查找操作。

通过这篇文章,你应该对二分查找有了初步的了解。如果你对Java数据结构与算法感兴趣,敬请关注我的专栏,将为你带来更多有趣、实用的知识。希望你在编程的道路上越走越远,风度翩翩!文章来源地址https://www.toymoban.com/news/detail-812507.html

到了这里,关于Java数据结构与算法:查找算法之二分查找的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据结构,查找算法(二分,分块,哈希)

    一、查找算法         1、二分查找:(前提条件: 必须有序的序列) 2、分块查找:(块间有序,块内无序)     索引表  +  源数据表     思路:     (1)先在索引表中确定在哪一块中     (2)再遍历这一块进行查找 //索引表 typedef  struct  {     int max; //块中最大值

    2024年02月11日
    浏览(60)
  • 数据结构和算法之二分法查找

    二分法查找,也称作 二分查找 或 折半查找 ,是一种在有序数组中快速查找特定元素的算法。它采用分治法思想,通过将问题划分为规模更小的子问题,并且通过对子问题的查找来解决原问题。 二分法查找的思路是不断地将数组一分为二,然后判断目标值在哪一部分,进而

    2024年02月09日
    浏览(48)
  • 【算法与数据结构】Java实现查找与排序

    也叫做折半查找,属于有序查找算法。 前提条件 :数组数据必须有序,从小到大,或者从大到小都是可以的。 如果是无序的,也可以先进行排序。 但是排序之后,会改变原有数据的顺序,查找出来元素位置跟原来的元素可能是不一样的,所以排序之后再查找只能判断当前数

    2024年01月19日
    浏览(51)
  • 数据结构-查找(顺序查找与二分查找的讲解与代码实现)

    顺序查找概念:从表的另一端开始,一次将记录的和给定值进行比较,若某个记录的和给定的值相等,则查找成功,反之则查找失败。 ASL:平均查找长度 pi查找概率,ci查找次数 eg:序列1,2,3 查找1的次数为1概率为1/3,2为两次概率1/3,3的次数为3概率1/3  将12

    2024年02月06日
    浏览(69)
  • 【手撕数据结构】二分查找(好多细节)

    🌈键盘敲烂,年薪30万🌈 目录 普通版本的二分查找: right只负责控制边界(少了两次比较): 时间复杂度更稳定的版本: BSLeftmost: BSRightmost:   🏸细节1:循环判定条件是left = right ⭐细节2:mid = (left + right ) 1 原因见代码注释 改动1:while条件是left right 改动2:right = nums.len

    2024年02月05日
    浏览(48)
  • 数据结构——用Java实现二分搜索树

    目录 一、树 二、二分搜索树 1.二叉树 2.二分搜索树 三、代码实现 1.树的构建 2.获取树中结点的个数 3.添加元素 4.查找元素 (1)查找元素是否存在 (2)查找最小元素 (3)查找最大元素 5.二分搜索树的遍历 (1)前序遍历: (2)中序遍历: (3)后序遍历: (4)层序遍历

    2024年02月19日
    浏览(41)
  • 二分搜索树(校招数据结构最低要求版)Java

    二分搜索树(Binary Search Tree,BST)是一种常见的数据结构,它能够高效地存储和查找数据。它的特点是每个节点都包含一个值,并且每个节点的左子树的值都小于节点的值,右子树的值都大于节点的值。 通过这种有序的排列方式,我们可以在二分搜索树中进行高效的查找操作

    2024年02月10日
    浏览(44)
  • 浙大数据结构第一周01-复杂度3 二分查找

    本题要求实现二分查找算法。 函数接口定义: 其中 List 结构定义如下: L 是用户传入的一个线性表,其中 ElementType 元素可以通过、==、进行比较,并且题目保证传入的数据是递增有序的。函数 BinarySearch 要查找 X 在 Data 中的位置,即数组下标(注意:元素从下标1开始存储)

    2024年02月12日
    浏览(48)
  • java实现二分查找算法

    递归实现: public static int binarySearchRecursive(int[] arr, int target) {     return binarySearchRecursive(arr, target, 0, arr.length - 1); }   private static int binarySearchRecursive(int[] arr, int target, int low, int high) {     if (low high) {         return -1; // 没有找到目标元素     }          int mid = (low + high) / 2

    2024年04月09日
    浏览(44)
  • Java 语言实现二分查找算法

    【引言】 二分查找算法是一种高效且常用的查找算法。它适用于已排序的数组或列表,并通过将目标值与中间值进行比较,来确定目标值在左侧还是右侧。本文将使用Java语言实现二分查找算法,并详细讲解其思想和代码实现。 【算法思想】 二分查找的核心思想是不断缩小查

    2024年02月11日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包