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

Python实现二分查找算法

二分查找又叫折半查找,二分查找应该属于减治技术的成功应用。所谓减治法,就是将原问题分解成若干个子问题后,利用了规模为n的原问题的解与较小规模(通常是n/2)的子问题的解之间的关系。  二分查找利用了记录按关键码有序的特点,其基本思想为:在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键码相等,则查找成功;若给定值小于中间记录的关键码,则在中间记录的左半边继续查找;若给定值大于中间记录的关键码,则在中间记录右半边区继续查找。不断重复上述过程,直到查找成功,或所查找的区域无记录,查找失败。  二分查找的时间复杂度是O(log(n)),最坏情况下的时间复杂度是O(n)。

03
您找到你想要的搜索结果了吗?
是的
没有找到

[数据结构与算法] Python实现二分查找

可能有人会问,学习机器学习还要不要学习数据结构,知乎上有个帖子,对这个问题有很多讨论,但是答案基本都是一致的,要学!但是这块其实我掌握的并不好,本科的数据结构就没学好,后来就没学了,直到去年有段时间打算恶补一下,买了《数据结构和算法 python语言实现》,书写的挺好的,就是看着头疼,基本概念可以看懂,就是实现起来不是很明白。然后后来就去实习了,在公司做的是深度学习的东西,根本用不到,所以好久不看就又忘记了,唉,也是醉了。最近各大互联网公司都开始秋招了,如果是做算法方向的,基本笔试题都会涉及数据结构,我参加

06

Python的内存管理

一直以为用Python、java这样的语言就不在需要关心内存使用的问题,但事情还是发生了。     前一段时间需要写一个应用,需要将用户删除的记录在文件中的偏移记录到另一个文件中,由于需要load的最大的数据文件也就1.2GB左右,而且系统的初始化设置在凌晨1点左右,做了个小测试,在几秒钟的时间可以load完数据并通过二分查找确定边界初始化列表,看了看服务器内存还是很空闲的,就想偷个懒在内存中做二分查找。开始测试的时候找了个较小的数据文件一切都正常,但到了线上环境内存就一路狂升到1.3G左右停下,本以为是python内存泄露,但review了所有的代码也没有找到可疑的地方。将所有不用的变量del掉可是,难道垃圾回收没起作用,通过sys.getrefcount来查看了可疑的变量的引用计数,内存还是没有降下来,看来真是遇到诡异的事件了。     在网上谷歌了一下python内存方面的文章,有篇网文写到,python将不用的内存放到内存池而并不返回给操作系统。在这个绝望的时候也没有别的办法了,只有试试这个方法了,那内存申请的大头开刀吧!将二分查找放磁盘中来做,在将二分查找改为文件二分查找后内存仅仅占14MB左右。至此大功告成! 回头总结下以上遇到的问题,python作为动态语言为了保证效率的确可能将释放的内存放到内存池中以减少内存申请时用户态到内核态切换时锁消耗的时间。在用python处理大对象和内存密集型任务时要格外注意python进程对系统内存的占有率。

03
领券