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

关于Robert Sedgewick和Kevin Wayne在“算法第4版”第115页上的练习1.2.9

在Robert Sedgewick和Kevin Wayne的《算法第4版》第115页上的练习1.2.9中,问题要求我们编写一段代码,实现一个静态方法rank(),该方法接受一个整型数组和一个整数key作为参数,并返回数组中小于key的元素数量。

以下是一个可能的实现:

代码语言:txt
复制
public class Rank {
    public static int rank(int[] arr, int key) {
        int lo = 0;
        int hi = arr.length - 1;
        int count = 0;

        while (lo <= hi) {
            int mid = lo + (hi - lo) / 2;
            if (arr[mid] < key) {
                count = mid + 1;
                lo = mid + 1;
            } else if (arr[mid] > key) {
                hi = mid - 1;
            } else {
                hi = mid - 1;
            }
        }

        return count;
    }

    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
        int key = 5;
        int result = rank(arr, key);
        System.out.println("小于" + key + "的元素数量为:" + result);
    }
}

这段代码实现了一个二分查找算法,通过不断缩小搜索范围,找到小于key的元素数量。在rank()方法中,我们使用了两个指针lohi来表示当前搜索范围的左右边界。通过计算中间位置mid,我们可以判断arr[mid]与key的大小关系,从而决定下一步的搜索范围。

这个算法的时间复杂度为O(logN),其中N是数组的长度。它在查找有序数组中小于给定值的元素数量时非常高效。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云数据库(TencentDB)。

  • 腾讯云云服务器(CVM):提供可扩展的云服务器实例,适用于各种计算需求。您可以根据实际需求选择不同配置的云服务器来运行您的应用程序。
  • 腾讯云数据库(TencentDB):提供高性能、可扩展的数据库服务,支持多种数据库引擎。您可以选择适合您应用程序的数据库类型,并根据需求进行灵活的扩容和管理。

这些产品可以帮助您在云计算环境中部署和管理应用程序所需的计算资源和数据库服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 这本书会是你算法分析道路上最好养料

    塞奇威克(Robert Sedgewick)。...罗伯特·塞奇威克(Robert Sedgewick) 塞奇威克曾经是普林斯顿大学计算机科学系创立者暨首任系主任,他同时还是著名Adobe公司董事。...作为行业代表著作,高德纳大师在此书序言中称赞道: “SedgewickFlajolet不仅是算法分析领域专家,同时也是算法分析布道大师。...如今本书中文版《算法分析导论(2版)》已出版上市,全书共 9 章, 1 章是导论; 2~5 章介绍数学方法; 6~9 章介绍组合结构及其算法分析中应用。...除每章包含大量习题以及参考文献外,本书还特设配套免费学习网站,为读者提供了很多关于算法分析补充材料,包括课件相关网站链接,帮助读者提高学习兴趣,完成更深入学习,感兴趣读者。 ?

    48940

    牛顿迭代法与二分法计算平方根

    因为不是科班出身,所以即使编程一段时间也时常感觉自身基础知识非常不扎实,于是最近开始补习算法计算机理论基础知识。...目前看算法书籍是《算法》(第四版),由Robert Sedgewick以及Kevin Wayne编写,由于不可能把所有的练习都写成博客记录下来,于是就在学习过程中,挑选一些有意思写成笔记,以便日后参考以及与同行互相交流...牛顿法是一种实数域复数域近似求解方程方法。方法使用函数 f(x)泰勒级数前面几项来寻找方程f(x)=0根。首先我们先来看函数图像。 ?...于是算法代码编写上,我们也可以用这种猜思想,来近似求解这个平方根,我们需要定义一个精度,若Xn+1-Xn值小于我们精度值,那么我们即可以认为Xn为我们要求解。...guess = 1.414213562373094 Dichotomy final result = 1.414213562373094 这里就一目了然了,所以有时候,写代码一定不能想着功能实现了就好,算法效率一定要多多思考

    1.8K20

    算法Ⅰ~Ⅳ(C++实现)——基础、数据结构、排序搜索 (第三版)》

    本书包括排序、选择、优先队列ADT实现符号表ADT(搜索)实现,配有帮助学生学习计算机算法特性1000多种新练习、100多个图表以及大量程序例子。   ...Robert Sedgewick完全重定了他著作,对它进行了充分扩展更新,涵盖了目前重要算法和数据结构。...虽然本书实质可以用于各种语言程序设计,Christopher Van WykSedgewick实现都采用了C++类ADT实现自然对应。   ...·有关排序、选择、优先级队列ADT实现符号表ADT(搜索)实现算法,超过100个。 ·关于二项式队列、多路基数排序、随机化BST、发散树、跳跃表、多叉线索、B树、可扩充散列等,采用了新实现。...·关于算法量化分析,是比较算法依据。 ·1000多条新练习,帮助读者学习算法

    85920

    算法到HPC:最全优秀编程书籍列表

    还是面对市场上琳琅满目的书籍时挑花了眼?本文作者精选了一些优秀编程书,并分门别类地整理成列表。...小编尽量找了书籍中文版豆瓣评分&简介,来看看有没有你中意书吧↓↓ 项目地址:https://github.com/majikarp/awesome-programming-books#id-section2...算法和数据结构 话不多说,直接上书。作者精选了六本关于算法和数据结构书籍。 关于算法 《Introduction to Algorithms》 作者:Thomas H....Algorithms in Java》 作者:Robert Sedgewick 未找到中文版 关于数据结构 《Fundamentals of data structures》 作者:Ellis Horowitz...book.douban.com/subject/4289836/ 《UNIX Systems for Modern Architectures》 作者:Curt Schimmel 中文译本:《现代体系结构

    1.1K30

    10本拍手叫绝编程好书丨文末送书

    05、算法 4 版) 算法是人工智能发展核心引擎之一,负责将原始数据转化为有价值信息决策。无论是深度学习、自然语言处理、计算机视觉还是强化学习等 AI 技术,都离不开先进算法支持。...《算法4版)》由普林斯顿大学教授 Robert Sedgewick Kevin Wayne 所著,全面介绍了关于算法和数据结构必备知识,并特别针对排序、搜索、图处理字符串处理进行了论述。... 4 版中,还具体给出了每位程序员应知应会 50 个算法,不仅提供了实际代码,而且这些 Java 代码实现采用了模块化编程风格,读者可以方便地加以改造。...本书全面讲述人工智能发展史,几乎覆盖人工智能学科所有领域,包括人工智能起源、自动定理证明、专家系统、神经网络、自然语言处理、遗传算法、深度学习、强化学习、超级智能、哲学问题未来趋势等,以宏阔视野生动语言...10、游戏为什么好玩:游戏设计奥秘 当然,我们是了解你工作、学习之余,假期沉浸在“第九艺术”游戏世界里,相信是很多人选择。

    50011

    求职丨我是如何成为了谷歌软件工程师

    结合这些方法能够增加你获得大型公司面试机会。 4步:学习数据结构算法 谷歌微软等顶级科技公司面试时,经常会问到关于数据结构算法问题。所以,如果你对这方面不太了解,那么你应该学习。...针对这方面的基础知识,我推荐我YouTube频道数据结构算法系列视频。...Sedgewick 5步:准备编程面试 谷歌微软等公司面试很难,但可以有针对性进行准备。...一旦你对数据结构算法有了深入了解,我就会推荐以下三种资源用于练习: · Leetcode——练习编程面试问题互动平台。...总结: 1步:学习编码 2步:做些个人项目 3步:获得第一份编程工作或实习 4步:学习数据结构算法 5步:准备编程面试 6步:不断尝试 等等,真的那么简单吗?

    80700

    数据结构与算法笔记

    数据结构与算法关系 数据结构算法是密不可分,数据结构提供了算法实现所需基础结构,而算法则是在数据结构基础实现。...例如,搜索问题中,使用哈希表可以大大提高搜索效率;排序问题中,使用堆排序可以优化时间复杂度。因此,熟练掌握数据结构算法,能够帮助程序员更好地理解和解决实际问题。...存储结构:数据结构计算机内存中存储方式,通常包括顺序存储链式存储等。 时间复杂度:描述算法执行所需时间量度,通常用大O符号表示。...《算法》(Algorithms) 该书由 Robert Sedgewick Kevin Wayne 编写,以实用性为主线,介绍了算法基本思想、实现方法性能分析。...该书适合作为算法入门教材,具有丰富示例代码练习题。

    19020

    双十一,你买了哪些大呼过瘾编程书?

    作者:[美]Robert C. Martin 内容简介: 干净代码,既质量较为可靠,也为后期维护升级奠定了良好基础。...每个部分必须反映相同原理、原则一致折衷机制。语法,每个部分应使用相同技巧;语义,应具有同样相似性。因此,易用性实际需要设计一致性概念完整性。”...因此,我知道要当场提出出色算法,然后白板编写无瑕代码是什么感觉。作为候选人和面试官,我都经历过这个过程。”——引自 序 11....所谓移植只会令产品第二平台蹩脚不堪。”——引自 1篇 Jamie Zawinski 22....作者:[美]Robert SedgewickKevin Wayne 内容简介: 本书作为算法领域经典参考书,全面介绍了关于算法和数据结构必备知识,并特别针对排序、搜索、图处理字符串处理进行了论述

    46520

    从图灵到高德纳:《算法分析导论》作者师承考据

    Robert Sedgewick 普林斯顿大学计算机系创始人,斯坦福大学师从D. E....由此,人们算法非形式概念精确定义之间建立了联系,即算法直觉概念等价于图灵机,这就是所谓“丘奇-图灵”论题。 ? “丘奇-图灵”论题提出算法定义是解决希尔伯特 10 个问题所需。...)罗宾逊(Julia Robinson)等人工作基础,最终证明检查多项式是否有整数根算法是不存在。...回顾建立算法形式化定义破解希尔伯特之 10 个问题那段风起云涌历史,我们不得不由衷地感叹:算法对于我们世界是多么重要。可以这样说,自计算机科学诞生之日起,关于算法研究就一直是一个核心话题。...作为导师,高德纳一生共指导过 28 位博士生,而本书作者之一罗伯特·塞奇威克(Robert Sedgewick)便是其中之一。

    1K40

    数据结构中队列

    本文将深入探讨栈队列概念、特性以及它们实际应用中使用。 1....理解栈应用场景有助于更深入地理解函数调用表达式求值内部机制,为编写高效算法提供了有力支持。 通过学习应用栈,我们能够更好地处理程序执行流程,提高代码可读性可维护性。...通过学习应用队列,我们能够更好地处理各种涉及到顺序执行问题,确保数据有序处理,提高系统可靠性可维护性。队列合理使用能够为系统设计算法优化提供有力支持。 3....深入理解这两种数据结构对于编写高效、清晰算法是至关重要。希望通过本文介绍,读者能够更好地理解栈队列,并在实际编程中灵活运用它们,提高代码质量效率。...参考资料: 《数据结构与算法分析》 - Mark Allen Weiss 《算法(第四版)》 - Robert Sedgewick, Kevin Wayne

    16410

    归并排序算法编码优化

    本篇内容来自《算法4版)》 — — Robert SedgewickKevin Wayne 概念 归并排序实现我是这样来描述:先对少数几个元素通过两两合并方式进行排序,形成一个长度稍大一些有序序列...从排序轨迹看,合并序列长度都是从小(一个元素)到大(整个数组)增长。 单趟归并算法 单趟排序实现分析 下面我先介绍两种不同归并算法调用公共方法, 即完成单趟归并算法。...单趟排序过程图解 为了更详细描述单趟排序过程,下面在上面的图A图B基础给出每一步图解: 我们要排序序列是 2 4 5 9 1 3 6 7, 合并前提是2 4 5 9 1 3 6 7...因为插入排序非常简单, 因此一般来说小数组比归并排序更快。 这种优化能使归并排序运行时间缩短10%到15%; 可以将下面的代码 ? 改为 ?...排序前拷贝一个原数组元素完全一样辅助数组(不再是创建一个空数组了!)。 递归调用每个层次交换输入数组输出数组角色。

    1.3K60

    算法-排序(

    上面快速排序实现中,我们都是选择数列中1个元素为基准元素,这种情况大多数情况是没有问题。...关于“内存墙”,论文是这样描述: CPU速度在过去25年中以46%平均年增长率增长,而内存带宽,即在给定时间内RAMCPU之间可传输数据量,每年增长37%。...因此,论文作者提到我们排序时不因仅考虑CPU速度,还应考虑内存速度,CPU内存是否匹配等影响。 同时给出了另一种比较排序算法优劣方法:扫描元素个数。...结论 关于交换排序算法内容就聊到这里,本文介绍了几种交换排序实现原理及特点。...Dual-Pivot Quicksort algorithm 《算法(4版)》作者: 美 Robert Sedgewick / 美 Kevin Wayne 《漫画算法》作者: 魏梦舒

    36610

    跟数学比起来,谁还不是个弟弟

    蕴含着宇宙中无穷无尽可能 ---- 数学,真是个让人爱恨交织名词 无论时代如何变换 数学都以特有的理性与魔力 IT互联网领域保持着超高存在感 数学应用发展 支持着计算机科学常用常新 计算机领域新成果...也同样体现在数学与时俱进 今天这个特别的日子里,让我们一同了解下 5本与数学有关IT领域热门图书 ---- ▊ 01....《算法分析导论(2版)》 【美】Robert Sedgewick,【法】Philippe Flajolet 著 常青 左飞 译 名满江湖算法红宝书作者Sedgewick大师行业代表作,现代算法奠基人Knuth...本书作者既精通经典数学又熟谙计算机科学,看重用于算法性能预测数学基础及从性能角度比较算法书中天才般贯通与揭露了数学世界奥义。 ▊ 04....用漫画形式讲述了算法和数据结构基础知识、复杂多变算法面试题目及算法实际应用场景。从基本数据结构,到各类排序算法,再到面试算法,再到职场应用,书中主角小灰大黄带领大家逐个破解。 ▊ 05.

    49020

    读完这7本算法书,你也可以像这10位算法大师一样改变世界

    PASCAL已经影响了整整几代程序员,Nicklaus Wirth思想还将会继续指引现在以后程序员前进方向。 9. Robert Sedgewick 罗伯特·塞奇威克 ?...“没有人能够将算法和数据结构解释得比Robert Sedgewick更清楚易懂了!”很多读过他著作程序员这样说。 目前Robert正在研究算法设计、数据结构、算法分析等方面的基础理论。...2000年因为其计算机科学与教育做出贡献被封为爵士。 02 关于算法7本经典著作 大师们改变了世界,但实际,世界每天都在发生变化,这其中,也有你贡献一份力量。...《算法设计与应用》 作者:迈克尔T.古德里奇 罗伯特·塔马契亚 推荐语:既有算法经典内容,也有现代专题,举自现实世界问题例子,提供三种类型练习。...《算法技术手册》(原书2版) 作者:乔治·海涅曼 加里·波利切 推荐语:伍斯特理工学院教授合力打造算法学习必备手册;提供高效代码解决方案,轻松应用于实践。 关于作者:George T.

    1.5K31

    啃完这3本书,你就是大神!

    软件开发行业中,通过阅读文章、书籍、参加会议、尝试新库、模式范例来不断地自学是很常见事情。...《算法Robert Sedgewick 本书教授基本算法,例如搜索,排序算法。所有计算机科学专业学生都将学习数据结构算法。这是该领域重要组成部分。...这本书将解释搜索功能实现以及排序算法之间差异。其中一节是关于图论。完成之后,你将清楚地了解如何遍历树并找到最短路径。认识到这些算法并能够应用它们,可能会对你下次求职面试非常有帮助。...一个有经验软件工程师知道什么情况下使用合适算法,以及预期性能。 如果你不想读一本厚书,而更喜欢听课,Coursera上有一门由该书作者提供完全免费课程。...它推荐给已经有一些编码经验开发人员。 结论 关于软件工程好书有很多。事实,我推荐书可以有其他选择。但是如果你读了上面提到那些,你将能够编写可读性可伸缩性更强代码。 ?

    66131

    奈学:红黑树(RedBlackTree)概述

    红黑树(Red Black Tree),它一种特殊二叉查找树,是AVL树特化变种,都是进行插入删除操作时通过特定操作保持二叉查找树平衡,从而获得较高查找性能。...因此它也可以O(log n)时间内做查找,插入删除。   有一些红黑树定义还有一个性质:“红黑树中叶子节点为最后空节点,并且每个叶子节点是黑色”。...该定义并不会对之前定义产生影响,其目的更多是为了简化平衡操作情况,平衡时可以认为:null就是黑色节点。此时只需要考虑红黑这两种情况就行,而不用考虑非红非黑null。...Guibas Robert Sedgewick 修改为如今“红黑树”。   实际Robert Sedgewick算法4版)》 中说过,红黑树等价于2-3树。...其中2-节点等价于普通平衡二叉树节点,3-节点本质是非平衡性缓存。

    1.4K00

    独家 | Python 3.10发布——你应该知道五大新特性

    print(my_list) 以前版本——Python3.9更早版本中,你会看到如下报错—— File "my_precious.py", line 3 print(my_list)...就我个人而言,除了3行某个地方添加了一个错误语法之外,没有任何其他信息。 但是,错误真的出现在3行吗? 在这种情况下,Python 3.10凭借其最新更新成为了我救世主。...示例中,它是一个字符串一个整数。此外,添加TypeAlias注释可以向类型检查器任何阅读该代码的人阐明意图。 4....Output: [(Tom, 21024), (Harry, 75978), (Jessica, 92176), (Robert, 75192), (Kevin, 34323)] 让我们再次使用上面显示这两个序列名称编号...Output [(Tom, 21024), (Harry, 75978), (Jessica, 92176), (Robert, 75192)] 注意,所有关于名字——Kevin信息都消失了!

    3.1K20
    领券