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

来源:互联网 发布:100本网络禁书在线阅读 编辑:程序博客网 时间:2024/06/05 11:43
// Test2.cpp : Defines the entry point for the console application.
//


#include "stdafx.h"


#define N 5
/*
* 对降序数组进行二分查找
*/
int main(int argc, char* argv[])
{
int a[N];
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;
}

原创粉丝点击