利用二分收索查找该数在该数组所在的位置,前提是要保证改数组是有序的
2018-01-10 19:06
260 查看
//2d3 二分搜索技术 #include <iostream> #include<stdio.h> using namespace std; template<class Type> int BinarySearch(Type a[],const Type& x,int n) { int left = 0;///最左边,也就是最开始的时候 int right = n-1;///最右边的界限 while(left<=right)///当还没找到时,继续找 { int mid = (left + right)/2;///二分法(因为保证是有序的) if(x == a[mid])///当找到的时候 { return mid;///则返回该数 } if(x>a[mid])///当大于时,说明在该数的右边,则最小+1 { left = mid + 1; } else///当小于时,说明在该数的左边,则最大-1 { right = mid - 1; } } return -1; } int main() { int x ,a[100],n; cout<<"请输入个数n:"; scanf("%d",&n); cout<<endl<<"请输入需要查找的数:"; scanf("%d",&x); cout<<endl<<endl; cout<<"请输入"<<n<<"个数组"; for(int i=0; i<n; i++) { scanf("%d",&a[i]); } cout<<BinarySearch(a,x,n)<<endl; return 0; }
运行结果如下
相关文章推荐
- 二分查找有序数组中某个数的所在范围 Search for a Range
- 剑指offer——面试题38:数字在排序数组中出现的次数(利用二分查找来找第一次和最后一次的位置)
- 插入元素到有序数组,二分搜索查找插入位置
- 对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。 给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。若该元素出现多次,请返回第一次出现的位置。
- (二分查找思想)从有序递增旋转数组45679123 中找到数字6的位置
- (二分查找思想)从有序递增旋转数组45679123 中找到数字6的位置
- N个有序整数数列已放在一维数组中,利用二分查找法查找整数m在数组中的位置,若找到,则输出其下标值;反之,则输出 “Not be found”
- 循环有序数组中的二分查找 Search in a rotated sorted array
- 在两个有序的数组中找第N个数,二分查找 O(lgm+lgn)级
- 有序数组的二分查找
- 对于一个有序的数组,如果要插入一个元素并保证数组还有序, 问如何获取该元素位置。用二分法
- 二分查找变体之循环有序数组找分界点
- Python 查找有序列表中指定元素所在位置
- 利用二分法查找一个数字在数组中的位置
- 利用二分法查找有序数组中某一元素
- 数组的查找,插入元素保证数组有序
- 有序数组的二分查找
- 在有序表中进行二分查找,并返回所查找的数在有序表中的位置
- 在排序的数组中二分查找一个元素,返回在数组中它第一次出现的位置
- java-利用折半查找算法将一个数插入有序数组中适当位置