clwn.net
当前位置:首页 >> 二分查找算法 >>

二分查找算法

算法思想。 ①搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束; ②如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。 ③如果在某一步骤数组...

假设10个数为: 1 2 3 4 5 6 7 8 9 10 则其相关的查找次数为: 1 ---- 表示5需要查找一次,第一次二分中间数 2 2 ----2 和8 在第二个二分查找中 3 3 3 3 4 4 4 总查找次数为1+2×2+3×4 +4×3 = 29 所以平均查找长度为29/10 =2.9

#include int binfind(int val[] , int num , int value) { int start = 0; int end = num - 1; int mid = (start + end)/2; while(val[mid] != value && start < end) { if (val[mid] > value) { end = mid - 1; } else if (val[mid] < value) ...

你把 main() { """"" c[i]=RecorBinarySearch(a[i],i,n,b,low,high,mid); 改成 c[i]=RecorBinarySearch(a,b,0,n-1); } 然后涵数就改成这样 int RecorBinarySearch(int *a , int b , int n0, int n1) { int d=(n0+n1)/2; if (b==a[d]) return d; ...

#include #include using namespace std; int main() { int a[10]={1,3,6,8,9,11,23,59,60,99}; int x; int low=0,high=9; int mid; cout

根据需求,用二分法查找指定数组中的指定数字,代码如下: #include // 在长度为len的数组a中寻找n,找到就返回数组下标,没找到就返回-1 int search(int a[], int len, int n) { int index = -1; int left = 0, right = len, mid = (left + rig...

适用的前提条件:1. 存储在数组中(例如一维数组) 2. 数组元素为有序(例如升序) 查找的基本思想:折半查找,设查找的元素为value value与中间元素(middle = left + (right -left) / 2这样做的好处防止中间元素出现越界)比较,若比中间值小...

没有这么麻烦吧 既然能用二分查找,说明这些数字一定是有序并且可以随机访问,直接将中间下标的1个(元素个数奇数),或者中间2个下标的平均值(元素个数偶数) 如果原来数据是乱序的,要二分查找肯定要先排序,排序完了又回到上面了

比较10次。 1个元素的时候比较1次 2~3个元素比较2次 4~7个元素比较3次 8~15 4 16~31 5 32~63 6 64~127 7 128~255 8 256~511 9 512~1023 10 就是log2n取整后 +1

#include void sort(int a[], int i,int num); main() { int a[4]={2,3,4,5}; int num; printf("请输入要查找的号码:"); scanf("%d",&num); sort(a,4,num); } //二分法 a[]为数组,n为数组大小,num为要查找的数字 void sort(int a[],int n,int n...

网站首页 | 网站地图
All rights reserved Powered by www.clwn.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com