读书人

一个二分法有关问题,请问一下哪里有错

发布时间: 2012-03-12 12:45:33 作者: rapoo

一个二分法问题,请教一下哪里有错?
#include <stdio.h>


int main(void)
{
int a[15] = {14,13,12,11,10,9,8,7,6,5,4,3,2,1,0}; //变量定义;
int high, low, n, mid;
low = 0; high = 14;

scanf( "%d ",&n); //输入要查找的数;

// 进行二分法,高于中间数的 low = mid + 1 否则 high = mid -1
do
{
mid = (high+low)/2;
if(n == a[mid])
break;

else if(n > a[mid])
low = mid + 1;

else
high = mid - 1;

printf( " %d %d %d\n ",high,low,mid); //运行此循环时若 n = 7 则正
//正常,大于7就始终执行 low
//= mid + 1 ;小于7就始终执行
//high = mid - 1;


} while(high > = low);

if(high < low)
printf( "no %d %d find number at array\n ",high,low);
else
printf( "find number is %d at a[%d]\n ",a[(high+low)/2],(high+low)/2);

getchar();

return 0;
}

[解决办法]
if(n == a[mid])
break;

else if(n < a[mid])//应该是这样吧??????????????
low = mid + 1;

else
high = mid - 1;

[解决办法]
非递增有序

读书人网 >C语言

热点推荐