Python 二分法

二分法定义:

  • 二分法是一种快速查找的方法,时间复杂度低,逻辑简单易懂,总的来说就是不断的除以2除以2...

例如需要查找有序数组array里面的某个关键字key的位置,那么首先确认array的中位数或者中点center,下面分为三种情况:

  • 假如array[center]>key,说明key在array中心左边范围;
  • 假如array[center]<key,说明key在array中心右边范围;
  • 假如array[center]=key,说明key在array中心。

代码实现:

array = [1,4,2,45,65,76,2,0]
key = 65
min = 0
max = len(array)-1#取array的索引
center = int((min+max)/2) #加int,防止出现浮点数
if key in array:
    while True: #建立死循环,使其找到key为止
        if array[center] > key:
            center = center -1
        elif array[center] > key:
            center = center +1
        elif array[center] == key:
            print(str(key)+'在array里面第'+str(center)+'个位置')
            break #找到之后终止
else:
    print('没有该数字')

运行效果

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原理 二分法查找的原理非常直观和易于理解:假设有一个已经排序好的列表,在其中查找某个元素,如果查找到,就返回该元素...
    AndersQ阅读 5,631评论 0 0
  • (1)冒泡排序 定义:比较相邻的元素大小,将小的前移,大的后移,就像水中的气泡一样,最小的元素经过几次移动,会最终...
    rtrhhthth阅读 1,410评论 1 0
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,353评论 0 33
  • 这篇文章是继上篇文章《创业三年我得到了什么?》的,主要讲的是如何打造一个属于自己的赚钱系统,在讲述这个内容前,...
    e582551b6ee5阅读 4,318评论 0 2
  • 不知道什么时候觉悟,我开始了忧虑自己的将来。 知道了努力学习是为了能够选择自己喜欢的生活,不再去将就。也许还会有些...
    上官玄阅读 3,251评论 3 3