您的位置:首页 > 编程语言 > C语言/C++

C语言实现 二分查找 支持降序和升序

2013-11-27 23:18 405 查看
// Test2.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#define N 5

/*

* 对降序数组进行二分查找

*/

int main(int argc, char* argv[])

{
int a
;
int i,k;
int low=0,high=N-1,mid;

bool ret = false;

printf("请输入一组有序的数字:\n");
for(i=0;i<N;i++)  
scanf("%d",&a[i]);

printf("输出输入的有序数字:\n");  

    for(i=0;i<N;i++)  
printf("%5d",a[i]);

printf("\n请输入查找的数字:");  
scanf("%d",&k);

if( a[low] > a[high] )//如果数组是降序的,使用下面方法
{
while(low<=high)
{
mid=(low+high)/2;

if( k > a[mid])
{
high = mid - 1;
}
else if( k < a[mid])
{
low = mid + 1;
}
else
{
printf("要查找的数字在数组的第%d位\n", mid);
ret = true;
break;
}
}// end while
}
else//如果数组是升序的,使用下面的方法
{
while(low<=high)
{
mid=(low+high)/2;

if( k < a[mid])
{
high = mid - 1;
}
else if( k > a[mid])
{
low = mid + 1;
}
else
{
printf("要查找的数字在数组的第%d位\n", mid);
ret = true;
break;
}
}// end while

}

if(ret == false){
printf("%d的值未找到\n",k);
}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: