二分数组的扩展:二分查找循环有序数组
来源:互联网 发布:淘宝客服好听的昵称 编辑:程序博客网 时间:2024/04/26 16:15
大致思路:先确定单调区间,然后根据判断指定点是否在单调区间内,剪掉另外一半区域~~如此循环。直到循环跳出,或者找到指定值对应的位置为止结束。
程序在cygwin下g++上编译通过。
#include <iostream>#include <vector>using namespace std;int findPos(const vector<int>& array, int var){ size_t start = 0; size_t end = array.size(); while(start <= end) { int middle = start + (end - start) / 2; if(array[middle] >= array[start]) { if(var == array[middle]) { return middle; } else if(var < array[middle] && var >= array[start]) { end = middle - 1; } else { start = middle + 1; } } else { if(var == array[middle]) { return middle; } else if(var > array[middle] && var <= array[end]) { start = middle + 1; } else { end = middle - 1; } } } return -1;}int main(){ //int Array[] = {4, 5, 1, 2, 3}; //int Array[] = {4, 5, 1, 1, 3}; int Array[] = {7,8,9,0,1,2,3,4,5,6}; std::cout << findPos(vector<int>(Array, Array + sizeof(Array) / sizeof(int)), 9) << std::endl; return 0;}
0 0
- 二分数组的扩展:二分查找循环有序数组
- 有序 循环数组的二分查找
- 循环有序数组/旋转数组的二分查找
- 有序数组的二分查找
- 有序数组的二分查找
- 有序数组的二分查找
- 有序数组\二分查找
- 有序数组二分查找
- 有序(循环)数组查找元素-二分查找法
- 旋转有序数组的二分查找
- 有序数组的二分查找程序
- 9.5-字符串有序数组的二分查找
- 对于有序数组的二分查找算法
- 旋转有序数组的二分查找
- 基于有序数组的二分查找
- 旋转有序数组的二分查找
- 有序数组中的二分查找
- 有序数组之二分查找
- Sqoop笔记
- 回调函数
- 警示一
- ubuntu 12.04出现insmod: error inserting 'hello.ko': -1 Device or resource busy的解决办法
- cocos2d-x 从win32到android移植的全套解决方案
- 二分数组的扩展:二分查找循环有序数组
- [ASP.NET MVC]如何設定Area底下的頁面為起始頁(網址路由Routing)
- Linux FTP 服务器配置简单说明
- 解决办法:异地冷恢复时 如果发现v$datafile里的有些用户用的数据文件没有备份
- 对ps 图层蒙板乱理解
- Unity3D协同程序
- 网站站内优化应该注意的问题 ?
- 设置、修改mysql用户密码
- Jquery 节点遍历