二分法c语言程序查找
㈠ C语言 二分法查找次数公式怎么推导
对具有n个元素的有序数组进行二分法查找,要分析的比较次数,可以使用画二叉判定树的方法来分析。该二叉判定树的高度为[log2(n)]+1层,此即为二分查找的最多比较次数,比如:n=1000,则最多比较[log2(1000)]+1=9+1=10次。
如果要计算平均的比较次数,则需要对二叉判定树中的每个节点进行分析,处于第一层的比较1次,第二层的比较2次,第三层比较3次,依次类推……把各个节点的比较次数累加,再处于节点数(元素个数)即为平均比较次数,这里假设查找是在等概率的情况下进行的。
举个例子:有9个元素的有序数组,对每个元素按1,2,3...8,9进行编号,则其二叉判定树如下:

这样分析,能看懂吗?希望能帮到你!
㈡ C语言二分法查找
二分法查找又称折半查字法;
思路是.恩!
举例吧0,1,2,3,4,5,6,7,8中找5取数组中的一半也就是地五个4与5比较,如果4>5(就是中间的那个数比要找的那个大,那么就取那个数之前的那部分);如果4<5(就是中间的那个数比要找的那个小,就取那个数只后的那部分);如此循环下去;
不好意思,语文没学好,表达不清楚
㈢ C语言编程二分法
1、打开Python开发工具IDLE,新建‘search.py’。

㈣ C璇瑷涓浜屽垎娉旷殑鍏蜂綋绋嫔簭鏄浠涔埚憿锛
涓句釜渚嫔瓙:
//浜屽垎镆ユ垒娉//
# include<stdio.h>
void main()
{
 int a[16],i,num,flag=0,top,bottom,mid;
 //瀹氢箟涓涓涓缁存暟缁刟[16]鐢ㄦ潵瀛樻斁渚涙煡镓剧敤镄勬暟鎹,浣嗗彧鐢╝[1]钬斺攁[15]//
 //num鐢ㄦ潵鏀捐佹煡镓剧殑鏁版嵁锛宖lag鏄琛ㄧず鏄钖︽垒鍒扮殑寮鍏冲彉閲忥纴top琛ㄧず镆ユ垒镄勮捣濮嬩綅缃锛宐ottom琛ㄧず镆ユ垒镄勭粓姝浣岖疆锛宫id琛ㄧずtop涓巄ottom镄勪腑闂翠綅缃//
 char goon;
 //鍙橀噺goon涓'y'鎴'Y'镞惰〃绀虹户缁涓嬩竴杞镆ユ垒锛屽惁鍒欑粓姝㈢▼搴//
 printf("璇疯緭鍏ョ1涓鏁板瓧锛\n");
 scanf(" %d",&a[1]);
 
 //渚濇¤緭鍏ョ浜屽埌绗鍗佷簲涓鏁帮纴骞惰佹眰杈揿叆镄勬暟阃掑噺//
 for(i=2;i<=15;i++)
 {
  printf("璇疯緭鍏ョ%d涓鏁板瓧锛\n",i);
  scanf(" %d",&a[i]);
  if(a[i]>=a[i-1])
  {
   printf("璇峰啀娆¤緭鍏ワ纴瀹冨簲璇ユ瘆涓娄竴涓鏁板皬锛\n");
   scanf(" %d",&a[i]);
  }
 }
 
 //杈揿嚭鍒氭墠杈揿叆镄勬暟//
 printf("浣犲垰镓嶈緭鍏ョ殑鏁版槸锛\n");
 for(i=1;i<=15;i++)
  printf(" %d",a[i]);
 printf("\n");
 
 //镆ユ垒寰鐜寮濮//
 do
 {
         printf("鐜板湪璇疯緭鍏ヤ綘瑕佹煡镓剧殑鏁帮细\n");//杈揿叆𨱍宠佹煡镓剧殑鏁//
   scanf(" %d",&num);
  top=15;
  bottom=1;
  mid=15/2+1;
  if(num>a[1] || num<a[15])//濡傛灉瑕佹煡镓剧殑鏁版嵁涓嶅湪瑙勫畾锣冨洿鍐咃纴浠flag=1锛岃緭鍑鸿秴鍑鸿寖锲寸殑淇℃伅//
  {
   flag=1;
   printf("浣犳墍瑕佹煡镓剧殑鏁板瓧涓嶅湪锣冨洿鍐咃紒\n");
  }
  
  while(flag==0 && (top-bottom)>0)//濡傛灉鍦ㄨ勫畾镄勮寖锲村唴锛屽紑濮嬩簩鍒嗘硶镆ユ垒//
  {
   if(num==a[mid])//镓惧埌镓闇鏁版嵁锛岄鍑烘湰灞傚惊鐜//
   {
    printf("浣犳墍瑕佹煡镓剧殑鏁板瓧鏄绗%d涓銆\n",mid);
    flag=1;
   }
   else if(num>a[mid])//濡傛灉瑕佹煡镓剧殑鏁版嵁姣攁[mid]澶э纴鍦ㄥ墠鍗婃暟缁勬煡镓//
   {
    top=mid+1;
    mid=(top+bottom)/2;
   }
   else               //濡傛灉瑕佹煡镓剧殑鏁版嵁姣攁[mid]灏忥纴鍦ㄥ悗鍗婃暟缁勬煡镓//
   {
    bottom=mid-1;
    mid=(top+bottom)/2;
   }
  }
  
  if(flag==0)//濡傛灉链镓惧埌鏁版嵁锛岃緭鍑烘垒涓嶅埌镄勪俊鎭//
   printf("镞犳硶镓惧埌浣犺佹垒镄勬暟瀛楋紒\n");
  
  printf("鏄钖︾户缁镆ユ垒锛(Y/N)锛\n");//璇㈤梾鏄钖﹀紑濮嬩笅涓杞镆ユ垒//
  scanf(" %c",&goon);
 }while(goon=='y' || goon=='Y');
}
