二分总结-.-
来源:互联网 发布:守纪律讲规矩知敬畏 编辑:程序博客网 时间:2024/05/22 11:53
弄了一天的二分模板 orz
// 查找第一个相等的元素int find(int n, int key,int *a) {int l=0,r=n-1;while(l<=r){int mid=(l+r)/2;if(a[mid]>=key) r=mid-1;else if(a[mid]<key) l=mid+1;}if(l<n&&a[l]==key)return l;return -1;}
// 查找最后一个相等的元素int find(int n, int key,int *a) {int l=0,r=n-1;while(l<=r){int mid=(l+r)/2;if(a[mid]<=key) l=mid+1;else if(a[mid]>key) r=mid-1;}if(r>=0&&a[r]==key)return r;return -1;}
// 查找最后一个等于或者小于key的元素int find(int n, int key,int *a) {int l=0,r=n-1;while(l<=r){int mid=(l+r)/2;if(a[mid]<=key) l=mid+1;else if(a[mid]>key) r=mid-1;}return r;}
// 查找最后一个小于key的元素int find(int n, int key,int *a) {int l=0,r=n-1;while(l<=r){int mid=(l+r)/2;if(a[mid]>=key) r=mid-1;else if(a[mid]<key) l=mid+1;}return r;}
// 查找第一个等于或者大于key的元素int find(int n, int key,int *a) {int l=0,r=n-1;while(l<=r){int mid=(l+r)/2;if(a[mid]>=key) r=mid-1;else if(a[mid]<key) l=mid+1;}return l;}
// 查找第一个大于key的元素
int find(int n, int key,int *a) {int l=0,r=n-1;while(l<=r){int mid=(l+r)/2;if(a[mid]<=key) l=mid+1;else if(a[mid]>key) r=mid-1;}return l;}
阅读全文
0 0
- 二分总结
- 二分总结
- 二分总结
- 二分总结
- 二分总结
- 二分总结
- 二分总结-.-
- 二分图总结
- 二分查找总结
- 二分查找的总结
- POJ1050总结 二分+判定
- 二分匹配总结
- 【二分】总结120527
- 二分图匹配总结
- 【二分查找】学习总结
- 二分匹配算法总结
- 二分图总结
- 二分图匹配总结
- Hibernate 01 : Hibernate概述
- 机器学习笔记(环境配置)-win10 64位 3.4版本python安装numpy库
- C# scrollView个数随机UI从上部显示
- Qt实现应用程序长时间未操作打印提示信息
- python强大的列表推导式
- 二分总结-.-
- 修改二进制程序并运行
- Hibernate 02 : Session
- Semslin 3D打印固件 项目日志节选(一)——了解ST的新工具:STM32CubeMX
- Java数组
- Error:Cause: buildToolsVersion is not specified.
- Javascript的异步编程(上)及es6的promise
- 安慰奶牛 java
- enote笔记法(2)——why的使用