二分查找——Python实现
Posted 为梦想付出
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分查找——Python实现相关的知识,希望对你有一定的参考价值。
一、排序思想
二分(折半)查找思想请参见:https://www.cnblogs.com/luomeng/p/10585291.html
二、python实现
def binarySearchDemo(arr, key): """ python二分查找非递归方式 :param arr:待排序列,有序集合 :param key:带查找元素 """ low = 0 high = len(arr) - 1 while low <= high: mid = (low + high) // 2 if key > arr[mid]: low = mid + 1 elif key < arr[mid]: high = mid - 1 else: return mid return -1 def binarySearchDemo2(arr, start, end, key): """ python二分查找递归方式 :param arr:待排序列,有序集合 :param start:待排序列,开始位置 :param end:待排序列,结束位置 :param key:带查找元素 """ if start > end: return -1 mid = (start + end) // 2 if key > arr[mid]: return binarySearchDemo2(arr, mid + 1, end, key) elif key < arr[mid]: return binarySearchDemo2(arr, start, mid - 1, key) else: return mid nums = [6, 12, 33, 87, 90, 97, 108, 561] # 非递归实现 print(binarySearchDemo(nums, 90)) # 递归实现 print(binarySearchDemo2(nums, 0, len(nums) - 1, 90))
以上是关于二分查找——Python实现的主要内容,如果未能解决你的问题,请参考以下文章