首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何创建一个循环来实现递归二进制搜索来搜索数组中的n个数字?JAVA

在Java中,可以使用递归的方式来实现二进制搜索算法来搜索数组中的n个数字。具体步骤如下:

  1. 创建一个方法来实现递归二进制搜索。该方法需要传入一个有序的整数数组、要搜索的数字、以及搜索的范围(起始和终止索引)作为参数。
  2. 在该方法中,首先检查搜索范围的有效性。如果起始索引大于终止索引,则表示搜索范围无效,返回-1,表示未找到。
  3. 确定搜索范围的中间索引,可以使用以下代码计算中间索引:int middle = (start + end) / 2
  4. 比较中间索引对应的元素和要搜索的数字。如果相等,则返回中间索引。
  5. 如果要搜索的数字小于中间索引对应的元素,则递归地调用方法,在左侧范围内进行二进制搜索,即传入起始索引和中间索引-1作为新的搜索范围。
  6. 如果要搜索的数字大于中间索引对应的元素,则递归地调用方法,在右侧范围内进行二进制搜索,即传入中间索引+1和终止索引作为新的搜索范围。
  7. 如果未找到要搜索的数字,继续在适当的范围内进行递归搜索,直到找到或者确定范围无效。
  8. 最后,在主程序中调用该方法,并传入要搜索的数组、要搜索的数字以及数组的起始索引和终止索引。根据返回的结果判断是否找到要搜索的数字。

以下是示例代码实现:

代码语言:txt
复制
public class BinarySearch {
    public static int recursiveBinarySearch(int[] array, int target, int start, int end) {
        if (start > end) {
            return -1;
        }

        int middle = (start + end) / 2;

        if (array[middle] == target) {
            return middle;
        } else if (array[middle] > target) {
            return recursiveBinarySearch(array, target, start, middle - 1);
        } else {
            return recursiveBinarySearch(array, target, middle + 1, end);
        }
    }

    public static void main(String[] args) {
        int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        int target = 8;
        int result = recursiveBinarySearch(array, target, 0, array.length - 1);

        if (result == -1) {
            System.out.println("Target not found in the array.");
        } else {
            System.out.println("Target found at index " + result + ".");
        }
    }
}

在上述示例代码中,recursiveBinarySearch方法用于实现递归二进制搜索,main方法中调用该方法来进行搜索。创建一个有序数组array,定义要搜索的数字target,并将数组的起始索引0和终止索引array.length - 1作为搜索范围。根据搜索结果输出相应的信息。

请注意,根据题目要求,答案中不能提及云计算品牌商,因此没有给出任何云计算相关的产品和链接地址。

相关搜索:在java中,如何创建一个循环来查找ArrayList中的每个不同的数字?如何编写一个高效的Cosmos DB查询来搜索数组中的空值?Java:如何在循环外部创建一个变量来记住循环中的int?如何循环一个数组来查找在另一个数组中引用的成对数字?如何编写一个while循环来检查Ruby中的"Y“或"N”字符?如何创建一个循环来打印列表中的所有其他条目?如何编写一个循环来合并列表中每N个元素中的2个元素?给定一个字符串数组,编写一个递归方法来搜索O(n)中的给定字符串并返回索引。LMK如何修复错误如何创建一个循环来显示XML字段中的所有数据?如何创建一个循环来在C中的函数菜单之间切换?如何创建一个for循环来在python的字典中添加元素?如何创建一个循环来询问存储在对象数组中的问题,并创建写有答案的按钮?如何遍历一个数组并创建一个列表来计算一个数字重复的次数如何通过使用python从嵌套的yaml中搜索来打印第一个键在R中,如何创建一个循环来划分数据框中的列如何编写一个方法来将二进制搜索树( BST )转换为BST中的值的排序列表?如何创建一个for循环来从R中的数据帧中获取相关性?如何创建一个方法来检查数组中的某些值,而不是整个数组?如何让用户输入一个数字,并让程序在不一致的二进制搜索中搜索它VB如何动态创建一个分组框来显示和分组数组中的单选按钮?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

实现一个二分搜索算法,搜索指定元素在已排序数组中的位置。(递归或者非递归实现)

实现一个二分搜索算法,搜索指定元素在已排序数组中的位置。(递归或者非递归实现) 简介:实现一个二分搜索算法,搜索指定元素在已排序数组中的位置。...(递归或者非递归实现) 算法思路 算法思路 二分查找是一种在有序数组中查找特定元素的搜索算法。该算法对数组进行比较次数的上限是 O(log n)。...[0]); // 数组长度为n int x = 5; // 要查找的元素x int result = binarySearch(arr, 0, n - 1, x); // 调用二分搜索函数...,在实现中我们使用递归方式进行查找。...("The index of " + x + " in array is: " + result); // 输出结果 } } 同样地,在Java中我们也使用递归方式进行查找。

3500

图解实例讲解JavaScript算法,让你彻底搞懂

正如我之前提到的,递归是循环的替代方法。那么,这个函数到底要运行多少次呢?好吧,这将创建一个无限循环,因为在任何时候都无法阻止它。假设我们只需要运行循环 10 次。在第 11 次迭代函数应该返回。...您以线性方式逐一搜索数组中的每个元素。线性搜索算法的时间复杂度只有一个 for 循环会运行 n 次。其中 n(在最坏的情况下)是给定数组的长度。...这里的迭代次数(在最坏的情况下)与输入(长度数组)成正比。因此,线性搜索算法的时间复杂度是线性时间复杂度:O (n)。二进制搜索算法在线性搜索中,您一次可以消除一个元素。...冒泡排序是众多排序算法中的一种。在冒泡排序算法中,我们通过将每个数字与前一个数字进行比较,将较大的数字交换到末尾。这是一个视觉表示。冒泡排序代码实现。...这里首先我们构建 10 个索引桶,从 0 到 9。然后我们取每个数字中的最后一个字符,并将该数字推送到相应的桶中。检索新顺序并重复每个数字的倒数第二个字符。不断重复上述过程,直到数组排序完毕。

87900
  • 数据结构和算法

    此外,两个子树也是二叉搜索树。二叉搜索树可以有效地检索数据。 ? image 矩阵:矩阵是一个双维数组。它使用两个索引行和列来存储数据。 ? image 图:图包含一组节点和边。节点也称为顶点。...在trie中,每个节点(根节点除外)存储一个字符或一个数字。通过将trie从根节点向下遍历到特定节点n,可以形成字符或数字的公共前缀,其也由特里结构的其他分支共享。 ?...O(n 2)平均值和最差值。 ? image 搜索:搜索是基于密钥查找内容。有线性搜索和二进制搜索。 线性搜索:线性搜索是一种在列表中查找目标值的方法。...它的工作原理是反复将列表中可能包含该项目的部分分成两半; 直到你将可能的位置缩小到一个。复杂性从O(n)减少到O(logn)。 ? image 递归:递归是一种函数或算法自称的计算机编程技术。...它应包括具有终止条件的步骤。当条件满足时,每个重复的其余部分从最后一个被调用到第一个重复处理。通过递归解决的最着名的问题是因子数。 阶乘数:数n的阶乘是所有小于或等于n的正非零数的乘积。n的阶乘由n!

    2K40

    可能是最可爱的一文读懂系列:皮卡丘の复杂度分析指南

    在上面的代码片段中,pokemons_list是参与锦标赛的所有神奇宝贝的列表。因此,该列表的大小为N。 皮卡丘搜索的运行时间分析: 1.第2步是一个循环,因此,其中的操作将重复N次。...冒泡排序算法仅仅重复执行一个操作--交换数字。同时,它不使用任何外部存储器。它只是重新排列原始数组中的数字,因此,空间复杂度是个常量,即O(1)或者Θ(1)。 插入排序 你喜欢打牌吗?...第5步是一个while循环,迭代两个子数组中较短的一个。这个while循环和之后第13与14步内的循环涵盖了两个子阵列的所有元素。因此,他们的时间复杂度是O(N)。...我们尝试用新学到的技巧来分析二进制搜索算法的时间复杂度。这两个变量l和r基本上定义了数组中我们必须搜索对给定要素x的部分 。 如果我们看一下算法,它所做的一切就是将输入数组的搜索部分分成两半。...除了根据某种条件进行递归调用之外,它实际上并没有做任何事情。那么,让我们快速查看二进制搜索算法的递归关系。 T(n) = T(n / 2) + O(1) 这看起来好像是一个非常简单的递归关系。

    91550

    普林斯顿算法讲义(三)

    在 G 上运行标准 DFS,但考虑刚刚计算的顺序中的未标记顶点,而不是标准的数字顺序。 从构造函数中对递归dfs()的调用到达的所有顶点都在一个强连通分量中(!)...开发一个非递归的拓扑排序实现 TopologicalX.java,该实现维护一个顶点索引数组,用于跟踪每个顶点的入度。在一次遍历中初始化数组和源队列,就像练习 4.2.7 中那样。...编写一个��序 NonrecursiveDirectedDFS.java,使用显式栈而不是递归来实现深度优先搜索。...BellmanFordSP.java 通过维护两个额外的数据结构来实现这种方法: 一个要放松的顶点队列 一个顶点索引的布尔数组onQ[],指示哪些顶点在队列上,以避免重复 负循环检测。...给定一个包含 N 个不同长度的十进制整数的数组,描述如何在 O(N + K) 的时间内对它们进行排序,其中 K 是所有 N 个整数的总位数。 美国国旗排序。

    17210

    LeetCode 刷题记录(三)

    基本的思路是:从第一行开始,每行按列循环放置皇后,如果找到一个符合规则的位置,则到下一行,以此类推,如果可以一直进行到最后一行,则得到一个正确的解法,记录下来;如果到某一行发现没有符合要求的位置,就回到上一行...可以看出,这种解法实际上是一种「深度优先搜索」。 在实际编程时,我们通过「递归」实现上述思路。...这里给出一个使用「位运算」的精妙解法。首先简单介绍一下本解法中使用到的与位运算相关的概念及性质。在位运算中,正负数的运算是基于「补码」实现的。...上述操作也可以通过「异或」来实现:x ^ (x & -x),因为 0 与任意数(0 或 1)异或的结果为原数字,所以只有最后一位出现的 1 会被清 0。...区别在于我们会使用 3 个「二进制数」来分别标记当前行哪些格子可以放置皇后,它们分别表示:列、主对角线和次对角线,二进制为 1 代表不能放置,二进制为 0 代表可以放置。

    42030

    Java实例教程(下)

    for循环通过数组Java数组第二小数Java阵列第3大号Java数组最小的数字Java数组第3个最小的数字Java数组最大的数字  Java数组第二大数字Java'for loop'Java构造函数同名类...Java array of Hash tablesJava查找数组中的数字  Java协变返回类型Java重载主方法Java将阵列更改为列表Java重载Java方法隐藏Java查找交集  另一个数组中的...表达式Java循环通过数组数组中的Java数组编译并执行Java OnlineJava进程数组  在数组上进行Java二进制搜索Java AutoboxingJava连续三个日期Java方法与类同名ava...示例阵列删除Java示例从另一个数组中删除数组Java示例从数组中查找公共Java示例从数组中查找公共元素Java示例在数组中查找对象Java示例检查两个数组的相等性  Java示例数组相等Java示例检查数组相等性...示例用户定义的异常Java示例数字总和Java示例前n个自然数Java示例链接列表的最后一个元素Java示例从LinkedList获取第一个和最后一个元素

    3K20

    学会这14种模式,你可以轻松回答任何编码面试问题

    循环排序模式一次在数组上迭代一个数字,如果要迭代的当前数字不在正确的索引处,则将其与在其正确的索引处的数字交换。...你可以尝试将数字放置在正确的索引中,但这会导致O(n ^ 2)的复杂度不是最佳的,因此是循环排序模式。 如何识别这种模式?...该模式如下所示: 给定一组[1、5、3] 从一个空集开始:[[]] 将第一个数字(1)添加到所有现有子集以创建新的子集:[[],[1]]; 将第二个数字(5)添加到所有现有子集:[[],[1],[5],...如果减少,则搜索结束=中间+1 这是"修改后的二进制搜索"模式的直观表示: 具有修改后的二进制搜索模式的问题: 与订单无关的二进制搜索(简单) 在排序的无限数组中搜索 12、前K个元素 任何要求我们在给定集合中找到顶部...只要获得" K"个排序数组,就可以使用堆来有效地对所有数组的所有元素进行排序遍历。你可以将每个数组中的最小元素推入最小堆中,以获取整体最小值。  获得总最小值后,将下一个元素从同一数组推到堆中。

    2.9K41

    剑指offer | 面试题29:二叉搜索树转换为双向链表

    | 面试题4:替换空格 剑指offer | 面试题5:从尾到头打印链表 剑指offer | 面试题6:重建二叉树 剑指offer | 面试题7:用两个栈实现队列 剑指offer | 面试题8:旋转数组的最小数字.../com/nateshao/sword_offer/topic_29_treeToDoublyList/Solution.java 二叉搜索树转换为双向链表 “题目描述 :输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表...要求不能创建任何新的节点,只能调整树中节点指针的指向。 为了让您更好地理解问题,以下面的二叉搜索树为例: 难度:中等 我们希望将这个二叉搜索树转化为双向循环链表。...链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。 下图展示了上面的二叉搜索树转化成的链表。...将 二叉搜索树 转换成一个 “排序的循环双向链表” ,其中包含三个要素: 排序链表: 节点应从小到大排序,因此应使用 中序遍历 “从小到大”访问树的节点。

    42720

    剑指offer | 面试题26:二叉搜索树的后序遍历序列

    | 面试题4:替换空格 剑指offer | 面试题5:从尾到头打印链表 剑指offer | 面试题6:重建二叉树 剑指offer | 面试题7:用两个栈实现队列 剑指offer | 面试题8:旋转数组的最小数字...剑指offer | 面试题9:斐波那契数列 剑指offer | 面试题10:青蛙跳台阶问题 剑指offer | 面试题11:矩阵覆盖 剑指offer | 面试题12:二进制中1的个数 剑指offer...| 面试题13:数值的整数次方 剑指offer | 面试题14:打印从1到最大的n位数 剑指offer | 面试题15:删除链表的节点 剑指offer | 面试题16:将数组中的奇数放在偶数前 剑指offer...二叉搜索树的后序遍历序列 题目描述 :输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。...复杂度分析: 时间复杂度 O(N^2) : 每次调用 recur(i,j) 减去一个根节点,因此递归占用 O(N) ;最差情况下(即当树退化为链表),每轮递归都需遍历树所有节点,占用 O(N) 。

    32420

    LeetCode-剑指offer

    调整数组顺序使奇数位于偶 题目 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。...二叉搜索树与双向链表 题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。...空间复杂度 O(N) : 数组占用线性大小的额外空间。 41. 数据流中的中位数 题目 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。...二进制中1的个数 题目 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。...在 Java 中,编译器使用 二进制补码 记法来表示有符号整数。因此,在上面的 示例 3 中,输入表示有符号整数 -3。

    1.3K20

    深入解析递归:Java语言探秘

    在分治法中,递归被广泛应用于将一个大问题分解为更小的子问题,然后通过解决子问题的方式来解决原始问题。归并排序和快速排序是两个典型的分治算法,它们都利用递归的思想。...// 创建一个数组用于存储中间结果 int[] dp = new int[n + 1]; dp[0] = 0; dp[1] = 1; /...递归结构清晰地表达了问题的子问题关系,而动态规划通过保存中间结果来提高效率。这是动态规划中递归的一个常见应用。...优化和注意事项 优化递归算法 记忆化搜索(Memoization): 通过缓存已经计算过的结果,避免重复计算,提高效率。在递归函数中添加一个缓存结构,将已经计算的结果保存起来,下次需要时直接使用。...让我们通过具体的 Java 代码示例来演示递归和迭代在某个问题上的实现,并同时突出它们的一些优缺点。

    8110

    java算法性能调优:详尽探讨时间复杂度与空间复杂度的分析与优化“

    接下来我将带领大家进入Java数据结构的深入学习,让我们一同享受Java数据结构中的奥秘。 一:时间复杂度: 在计算机科学中, 算法的时间复杂度是一个数学函数 ,它定量描述了该算法的运行时间。...一个算 法所花费的时间与其中语句的执行次数成正比例, 算法中的基本操作的执行次数,为算法的时间复杂度。 空间复杂度: 空间复杂度是对一个算法在运行过程中 临时占用存储空间大小的量度 。...可以将计算结果保存在变量中,避免每次循环都重新计算。 合并相邻的循环:如果存在相邻的循环,可以考虑将其合并成一个循环,以减少循环的次数和循环体操作。 5....动态环境优化: 在动态环境中,数据和需求可能随时变化。 如何快速适应这些变化并进行实时优化是一个重要的研究方向。...算法复杂度分析: 随着算法的不断发展和复杂化,如何准确估计算法的时间复杂度和空间复杂度成为了一个技术难点。 需要对算法的执行过程有深入的理解,并能够分析出算法中哪些操作是主要的、耗时的。

    17510

    搞定大厂算法面试之leetcode精讲11剪枝&回溯

    空间复杂度:O(N),其中 N 是皇后数量,空间复杂度主要取决于递归调用层数、记录每行放置的皇后列下标的数组以及三个集合,递归调用层数不会超过 N,数组的长度为 N,每个集合的元素个数都不会超过 N。...全排列 (medium) 思路:准备path数组,存放每一个回溯递归的分支中的数字排列,调用回溯函数 传入nums,nums长度,used数组,used表示已经使用的数字,回溯函数中循环nums中的数...,每层循环将nums中的元素加入path中,然后递归调用回溯函数,调用完成之后,回溯之前的状态,当path数组的长度和nums的长度相同就找到了一种排列。...path,然后startIndex加1,继续递归函数进入下一个分支,完成调用之后回溯状态,当path的长度等于k的时候终止这层分支,加入结果中。...递归的每一层遍历这一层的数字对应的字符,然后传入新的字符,指针向后移动一次,不断递归 复杂度:时间复杂度O(3^m * 4^n),m,n分别是三个字母和四个字母对应的数字个数。

    54820

    GitHub 标星 5.5w,如何用 Python 实现所有算法!

    Bubble sort是一种慢速算法,但很容易实现。为了对小数据集进行排序,冒泡排序可能是一个更好的选择。 搜索算法 线性搜索 ? 线性搜索或顺序搜索是用于在列表中查找目标值的方法。...它按顺序检查列表中的每个元素的目标值,直到找到匹配或直到搜索完所有元素。 假设一个数组中有N个元素,最好的情况就是要寻找的特定值就是数组里的第一个元素,这样仅需要1次比较就可以。...而最坏的情况是要寻找的特定值不在这个数组或者是数组里的最后一个元素,这就需要进行N次比较。 Binary 二进制搜索 ? 二进制搜索,也称为半间隔搜索或对数搜索,用于查找已排序数组中目标值的位置。...这比线性搜索更好,但比二分搜索差。优于后者的优点是跳转搜索只需要向后跳一次,而二进制可以向后跳转到记录n次。 在最终执行线性搜索之前,可以通过在子列表上执行多级跳转搜索来修改算法。...快速选择的总体思路与快速排序一致,选择一个元素作为基准来对元素进行分区,将小于和大于基准的元素分在基准左边和右边的两个区域。不同的是,快速选择并不递归访问双边,而是只递归进入一边的元素中继续寻找。

    1K30

    干货 | Github标星近3w,热榜第一,如何用Python实现所有算法和一些神经网络模型

    他可以得到比冒泡排序稍微好一点的性能,原因是冒泡排序只从一个方向进行比对(由低到高),每次循环只移动一个项目。...假设一个数组中有N个元素,最好的情况就是要寻找的特定值就是数组里的第一个元素,这样仅需要1次比较就可以。而最坏的情况是要寻找的特定值不在这个数组或者是数组里的最后一个元素,这就需要进行N次比较。...Binary 二进制搜索 二进制搜索,也称为半间隔搜索或对数搜索,用于查找已排序数组中目标值的位置。...这比线性搜索更好,但比二分搜索差。优于后者的优点是跳转搜索只需要向后跳一次,而二进制可以向后跳转到记录n次。 在最终执行线性搜索之前,可以通过在子列表上执行多级跳转搜索来修改算法。...快速选择的总体思路与快速排序一致,选择一个元素作为基准来对元素进行分区,将小于和大于基准的元素分在基准左边和右边的两个区域。不同的是,快速选择并不递归访问双边,而是只递归进入一边的元素中继续寻找。

    1.1K30

    Github标星2w+,热榜第一,如何用Python实现所有算法

    他可以得到比冒泡排序稍微好一点的性能,原因是冒泡排序只从一个方向进行比对(由低到高),每次循环只移动一个项目。...假设一个数组中有N个元素,最好的情况就是要寻找的特定值就是数组里的第一个元素,这样仅需要1次比较就可以。而最坏的情况是要寻找的特定值不在这个数组或者是数组里的最后一个元素,这就需要进行N次比较。...Binary 二进制搜索 二进制搜索,也称为半间隔搜索或对数搜索,用于查找已排序数组中目标值的位置。...这比线性搜索更好,但比二分搜索差。优于后者的优点是跳转搜索只需要向后跳一次,而二进制可以向后跳转到记录n次。 在最终执行线性搜索之前,可以通过在子列表上执行多级跳转搜索来修改算法。...快速选择的总体思路与快速排序一致,选择一个元素作为基准来对元素进行分区,将小于和大于基准的元素分在基准左边和右边的两个区域。不同的是,快速选择并不递归访问双边,而是只递归进入一边的元素中继续寻找。

    91750

    如何用 Python 实现所有算法

    Bubble sort是一种慢速算法,但很容易实现。为了对小数据集进行排序,冒泡排序可能是一个更好的选择。 搜索算法 线性搜索 ? 线性搜索或顺序搜索是用于在列表中查找目标值的方法。...它按顺序检查列表中的每个元素的目标值,直到找到匹配或直到搜索完所有元素。 假设一个数组中有N个元素,最好的情况就是要寻找的特定值就是数组里的第一个元素,这样仅需要1次比较就可以。...而最坏的情况是要寻找的特定值不在这个数组或者是数组里的最后一个元素,这就需要进行N次比较。 Binary 二进制搜索 ? 二进制搜索,也称为半间隔搜索或对数搜索,用于查找已排序数组中目标值的位置。...这比线性搜索更好,但比二分搜索差。优于后者的优点是跳转搜索只需要向后跳一次,而二进制可以向后跳转到记录n次。 在最终执行线性搜索之前,可以通过在子列表上执行多级跳转搜索来修改算法。...快速选择的总体思路与快速排序一致,选择一个元素作为基准来对元素进行分区,将小于和大于基准的元素分在基准左边和右边的两个区域。不同的是,快速选择并不递归访问双边,而是只递归进入一边的元素中继续寻找。

    1.8K30

    Github标星2w+,热榜第一,如何用Python实现所有算法

    Bubble sort是一种慢速算法,但很容易实现。为了对小数据集进行排序,冒泡排序可能是一个更好的选择。 搜索算法 线性搜索 ? 线性搜索或顺序搜索是用于在列表中查找目标值的方法。...它按顺序检查列表中的每个元素的目标值,直到找到匹配或直到搜索完所有元素。 假设一个数组中有N个元素,最好的情况就是要寻找的特定值就是数组里的第一个元素,这样仅需要1次比较就可以。...而最坏的情况是要寻找的特定值不在这个数组或者是数组里的最后一个元素,这就需要进行N次比较。 Binary 二进制搜索 ? 二进制搜索,也称为半间隔搜索或对数搜索,用于查找已排序数组中目标值的位置。...这比线性搜索更好,但比二分搜索差。优于后者的优点是跳转搜索只需要向后跳一次,而二进制可以向后跳转到记录n次。 在最终执行线性搜索之前,可以通过在子列表上执行多级跳转搜索来修改算法。...快速选择的总体思路与快速排序一致,选择一个元素作为基准来对元素进行分区,将小于和大于基准的元素分在基准左边和右边的两个区域。不同的是,快速选择并不递归访问双边,而是只递归进入一边的元素中继续寻找。

    79720
    领券