二分法的学习
1、二分法的查找
一般而言,二分法是在数组当中,且数组的内部也是已经做好了从大到小或者从小到大的排序了,我们需要在这些排序中找到我们需要的数值。
int binart(int *a, int key, int n) { int left = 0, right = n - 1,mid = 0; mid = (left + right) / 2; while ((left<right)&& a[mid]!=key) { if (a[mid]<key) { left = mid + 1; } else if ( a[mid] > key) { right = mid - 1; } mid = (left + right) / 2; } if ( a[mid] == key) { return mid; } return -1; }
2、二分法查找的次数
二分法查找的几次,范围是 f,而查找的步数 是 s,那么,s = log2(f) + 1; 这里的 log 是以 2 为低。所以当范围是 100 的时候,查找的次数就是 7,而当范围是 1000 的时候,查找的次数就是10.