回 帖 发 新 帖 刷新版面

主题:[讨论]C++基础编程:折半查找法

C++基础编程:折半查找法


 C++基础编程
有15个数按由大到小的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值,如果该数不在数组中,则打印出“无此数”。要求用C++编程
#include <iostream>
using namespace std;
int main()
{
 void Search(int x,int array[]);
 int a[15]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1},x;
 cout<<"input a number:";
 cin>>x;
 Search(x,a);
 return 0;
}
void Search(int x,int array[])
{
 int mid,low=1,high=15,target=0;
 while(low<=high && target==0)
 {
  mid=(low+high)/2;
  if(x==array[mid])
  {
   cout<<"该数是数组中的第"<<mid<<"数"<<endl;
   target=1;
  }
  else if(x<array[mid]) high=mid-1;
  else low=mid+1;
 }
 if(target==0) cout<<"数组中找不到该数"<<endl;
}
以上是我编的一段代码,输入12运行结果却是“数组中找不到该数”,求各位指定迷津,我这段程序哪出错了,望指点。。。感激不尽。。。

回复列表 (共2个回复)

沙发

浣犲ソ 鎴戜篃鏄垵瀛?鐜板湪鍦ㄦ墜鏈轰笂鎵撳瓧 寰堜笉鏂逛究  
鐜板湪鍋囪绋嬪簭绗竴娆¤繍琛屽埌
min=(low+high)/2
鏄剧劧姝ゆ椂mid=8
涓攁rray[mid]=8
鎵€浠ュ埌else if(x<array[mid]鏃?鏄剧劧閫夋嫨杩愯
else low=mid+1;
 閭d箞寰幆浣撲腑灏嗕竴鐩存槸閫夋嫨
else low=

板凳

抱歉,我现在是用手机,
刚才打好的字不小心丢失了,
懒得再打,就不分析给你了,
问题出在循环体里,
你试试看把
else if(x<array[mid])
改成
else if(x>array[mid])
看看

我来回复

您尚未登录,请登录后再回复。点此登录或注册