首页 > 代码库 > 二分查找法
二分查找法
#include<stdio.h> int BinarySearch(const int a[],const int t,int lengh) ///暂时没错的版本,注意middle最好不要直接赋值,因为那样如果找不到,会引起死循环 { printf("%d",sizeof(a));///放到这里输出为4 int start = 0, end = lengh - 1; while(start <= end) { printf("start = %d and end = %d \n",start,end); int middle = start + (end - start)/2; if(a[middle] == t) return middle; else if(a[middle] < t) start = middle + 1; else end = middle - 1; } printf("The end"); } int BinarySearchRecuision(const int a[], const int t, int start, int end) { if(start > end) return -1; int middle = (start + end)/2; if(a[middle] == t) return middle; else if (t > a[middle]) return BinarySearchRecuision(a,t,middle+1,end); else return BinarySearchRecuision(a,t,start,middle-1); }///这估计就是传说中的分治法吧~ void main() { int a[] = {1,2,3,5}; int lengh = sizeof(a)/sizeof(a[0]); printf("%d",sizeof(a)); ///放到这里输出为16 BinarySearch(a,5,lengh); }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。