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

C怎样语言实现如上算法

2012-10-13 
C怎样语言实现如下算法?C怎样语言实现如下算法?从键盘输入10个数的有序数列。然后,再输入一个数,用折半查找

C怎样语言实现如下算法?
C怎样语言实现如下算法?
从键盘输入10个数的有序数列。然后,再输入一个数,用折半查找法在数列中查找。如果找到,输出" FOUND",并输出该 数列中的位置。如没找到,则输出"NOT FOUND"

[解决办法]
输入的序列都已经是有序的了?那就直接binary search吧,c++实现一个:

template <typename Comparable>
int binarySearch( const vector<Comparable> & a, const Comparable & x )
{
int low = 0, high = a.size( ) - 1;

while( low <= high )
{
int mid = ( low + high ) / 2;

if( a[ mid ] < x )
low = mid + 1;
else if( a[ mid ] > x )
high = mid - 1;
else
return mid; // Found
}
return NOT_FOUND; // NOT_FOUND is defined as -1
}

[解决办法]

探讨

输入的序列都已经是有序的了?那就直接binary search吧,c++实现一个:

template <typename Comparable>
int binarySearch( const vector<Comparable> &amp; a, const Comparable &amp; x )
{
int low = 0, high = a.size( ) - 1;
……

[解决办法]
int find()
{
int a[10] = {1,2,3,4,5,6,7,8,9,10};
int mid=0,n,low = 0,hight =9;
scanf("%d",&n);
while(low <= hight)
{
mid = (low + hight)/2;
if(a[mid] == n)
{
printf("FOUND %d",mid);
return mid;
}
else if(a[mid] < n)

low = mid + 1;
}
else
hight = mid - 1;
}
return -1;
}
如果找到了就返回下表,否则返回-1.

热点排行