循环有序数组的查找
2015-07-16 22:14
260 查看
//有一个循环有序数组A,如何从这样的数组中寻找一个特定的元素呢?利用折半查找的思想 #include<iostream> using namespace std; int search(int data[],int low,int high,int key) { while(low<=high) { int mid=(high+low)/2; if(key==data[mid]) return mid; else { if(data[low]<=data[mid]) { if(key>data[mid]) low=mid+1; else { if(key>=data[low]) high=mid-1; else low=mid+1; } } else { if(key<data[mid]) high=mid-1; else { if(key<=data[high]) low=mid+1; else high=mid-1; } } } } return -1; } void main() { int data[]={7,8,9,0,1,2,3,4,5,6}; int len=sizeof(data)/sizeof(int); cout<<search(data,0,len-1,4)<<endl; }
相关文章推荐
- Codeforces 577E Ann and Half-Palindrome 字典树
- C语言中的数组和字符串
- echarts数据专题图
- [C++ primer]C++四种强制类型转换
- 操作系统相关知识
- LeetCode---(69)Sqrt(x)
- C++慎用define,以及相关的替代的方法
- TOJ 3858 Home 搜索
- Jar ------META-INF的介绍
- 大数据将进入2.0时代(价值变现时代)
- string的不可变性
- 生成代码的代码 之 POJO生成器 之二 模板实现
- L3:equals()、String 类
- Project Euler:Problem 69 Totient maximum
- 2015.07.16总结
- 初学Objective-C
- C# 操作剪贴板
- hdu 1166 敌兵布阵
- 反射
- javascript日历控件