首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

输入一个1到1000的数字用C语言实现二分法来查找到刚才输入的数,该如何解决

2012-02-23 
输入一个1到1000的数字用C语言实现二分法来查找到刚才输入的数输入1到1000的数字用C语言实现2分法来查找[

输入一个1到1000的数字用C语言实现二分法来查找到刚才输入的数
输入1到1000的数字
用C语言实现2分法来查找

[解决办法]
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int num, low=1, h=1000, cur=(low+h)/2;
printf( "Input a number: ");
scanf( "%d ",&num);
while(cur!=num)
{
if(cur <num)low=cur;
else h = cur;
cur=(low+h)/2; //2分
}
printf ( "Find the number: %d\n ",cur);

system( "pause ");
return 0;
}
[解决办法]
二分查找递归,迭代写法
#include <iostream>

using namespace std;

bool bs(int *arr, int low, int high, int sval)
{
int mid = (high + low) / 2;
if (arr[mid] == sval)
{
return true;
}
else if (arr[mid] < sval)
{
low = mid + 1;
if(bs(arr, low, high, sval))
return true;
}
else
{
high = mid - 1;
if(bs(arr, low, high, sval))
return true;
}
return false;
}

bool bsiterate(int *arr, int low, int high, int sval)
{
if (low > high)
{
return false;
}
else
{
int mid = 0;
while (low <= high)
{
mid = (low + high) / 2;
if (arr[mid] == sval)
{
return true;
}
else if (arr[mid] < sval)
{
low = mid + 1;
}
else
{
high = mid - 1;
}
}
return false;
}
}

int main()
{
int a[10] = {1,2,3,4,5,6,7,8,9,10};
if (bs(a, 0, 9, 8))
{
cout < < "found " < < endl;
}
if (bsiterate(a, 0, 9, 8))
{
cout < < "found " < < endl;
}
return 0;
}

热点排行