python算法双指针问题:二分查找
Posted aguncn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python算法双指针问题:二分查找相关的知识,希望对你有一定的参考价值。
这里要注意的是//向下取整,下次循环时,如果大于查找的数字,start+1。
并且,只能向下取整,如果向上取整。
那么,在比较第一个数时,start = 0 。end = 1。mid = 1。就会进入死循环了。
切记切记。
import math a_list = [2, 5, 23, 45, 67, 89, 90, 123, 234, 345, 567, 7890, 12132] guess_no = 67 answer = -1 start, end = 0, len(a_list) while end - start > 1: mid = (end + start) // 2 print(start, end, mid, a_list[mid]) if a_list[mid] == guess_no: answer = guess_no break elif a_list[mid] < guess_no: start = mid + 1 else: end = mid else: if a_list[start] == guess_no: answer = guess_no print(‘find it‘) print(answer) # ==================上面为书,下面为自己================= answer = -1 start, end = 0, len(a_list) while start < end: mid = math.floor((start + end) / 2) print(start, end, mid, a_list[mid]) if guess_no < a_list[mid]: end = mid elif guess_no == a_list[mid]: answer = guess_no break else: start = mid + 1 print(answer)
输出:
0 13 6 90 0 6 3 45 4 6 5 89 find it 67 0 13 6 90 0 6 3 45 4 6 5 89 4 5 4 67 67 Process finished with exit code 0
以上是关于python算法双指针问题:二分查找的主要内容,如果未能解决你的问题,请参考以下文章
34. 在排序数组中查找元素的第一个和最后一个位置-二分查找双指针
34. 在排序数组中查找元素的第一个和最后一个位置-二分查找双指针