// 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;
}
//
#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;
}