二分搜索应用
来源:互联网 发布:网络教育去哪报名? 编辑:程序博客网 时间:2024/06/14 18:04
1 从有序数组中查找数组中比某个数大的或比某个数小的第一个数
用二分搜索查找数组中比某个数大的或比某个数小的第一个数。例如在数组中查找比7大的数为8,比7小的数为6,如果能查找到则返回对应数的索引。如果返回的索引查处的数组sums的取值范围说明没找到合适的值
-查找比某个数大的第一个数Python代码如下
def searchFirstBigThan(left, right, key, sums): while(left <= right): mid = (left + right) / 2 if(sums[mid] >= key): right = mid - 1 else: left = mid + 1 return left
- 查找比某个数小的第一个数的Python代码为:
def searchFirstLessThan(left, right, key, sums): while(left <= right): mid = (left + right) / 2 if(sums[mid] <= key): left = mid + 1 else: right = mid - 1 return right
测试代码
sums=[0,2,5,6,8,12,15]r = searchLessThan(0, 6, 16, sums)
2 从部分排序的数组中找出最小值
例如数组num=[6,7,8,9,-4,-3,-2,-1,0],其中子数组[6,7,8,9]和[-4,-3,-2,-1,0]是有序的。[-4,-3,-2,-1,0]与[6,7,8,9]合并在一起是整个有序的。要求从[6,7,8,9,-4,-3,-2,-1,0]中找出最小值-4。用二分查找,low与up分别指向数组的首尾,mid=(low+up)/2,如果num[mid]>num[up],说明最小值在[mid+1,up]间,关系low=mid+1,如果num[mid]
def searchMin(num): low = 0 up = len(num) - 1 while(low < up): mid = (low + up) / 2 if(num[mid] > num[up]): low = mid + 1 elif(num[mid] < num[up]): up = mid return low
测试代码
sums = [6,7,8,9,-4,-3,-2,-1,0]r = searchMin(sums)
0 0
- 二分搜索的应用
- 二分搜索应用
- 二分搜索应用二
- 二分搜索的巧妙应用
- poj1064二分搜索的应用
- poj3061----二分搜索的应用
- 二分搜索及其变形应用
- 二分搜索与三分搜索的应用
- 第二章:二分搜索思想的应用
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- Linux查看程序端口占用情况 netstat -apn | grep 8005
- Cell复用问题
- SAT阅读解题思路指导:理解与推理
- 在排好序的数组中添加一个数字,将添加后的数字插入到数组合适的位置
- LeetCode OJ 之 Excel Sheet Column Number (excel表格列号)
- 二分搜索应用
- FreeMarker常用标签介绍
- pdf合并软件有哪些使我们需要的
- 截取数组的前1000条数据
- 第十三周补充项目:约瑟夫环问题(链表类)
- jdk及tomcat安装配置
- jni开发中打印log信息
- 直方图基础汇总
- SQL 统计查询语句消耗时间