二分查找
来源:互联网 发布:ubuntu 14.04 ant 编辑:程序博客网 时间:2024/06/10 20:03
//学习地址 // https://www.cnblogs.com/luoxn28/p/5767571.html#include<iostream>using namespace std;int Search(int *Array,int len,int Value){int index = 0;int low = 0;int high = len-1;int mid = (high - low) / 2;while (true){if (Array[mid]==Value){return mid;}else if (Array[mid]>Value)//查找数据在左边{high = mid - 1;mid = (high +low) / 2;}else{low = mid + 1;mid = (high + low) / 2;//mid=(high-low)/2+low}}return index;} /*** 二分查找,找到该值在数组中的下标,否则为-1*/static int binarySerach(int array[],int len , int key) {int left = 0;int right = len-1;// 这里必须是 <=while (left <= right) {int mid = (left + right) / 2;if (array[mid] == key) {return mid;}else if (array[mid] < key) {left = mid + 1;}else {right = mid - 1;}}return -1;}// 查找最后一个相等的元素static int findLastEqual(int array[], int len,int key) {int left = 0;int right = len - 1;// 这里必须是 <=while (left <= right) {int mid = (left + right) / 2;if (array[mid] <= key) {left = mid + 1;}else {right = mid - 1;}}if (right >= 0 && array[right] == key) {return right;}return -1;}int main(){int array[13] = { 1, 2, 3, 4, 5,6,7, 8, 9,10,10,10 ,10};int index = Search(array, 10,10);cout << index << "值"<< array[index] << endl;int re = findLastEqual(array, 13, 10);cout << "最好一个匹配的位置" << re<<":"<<array[re]<< endl;getchar();return 0;}
阅读全文
0 0
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- laravel中如何区分get数据和post数据
- Linux工作队列实现机制
- c#之接口练习
- 计算机网络之动态主机配置协议DHCP
- _BSMachError: port 9f03; (os/kern) invalid name (0xf) "Unable to deallocate send right"
- 二分查找
- js进行字符串的字节判断和截取
- 笨方法学习Python-习题40: 字典, 可爱的字典
- Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #17: invalid drawable tag vec
- Android的内存管理
- 计算机网络之套接字SOCKET
- LINUX学习笔记(十四)
- java中try 与catch的使用
- 浅谈Spring的面向接口编程