算法之递归与分治思想-----折半查找算法~自己写的出了一堆问题,define用了分号,for循环后用了分号,scanf缺了&,检查出来之后还是有问题,累觉不爱,上标准答案~~
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define FAILURE -1
int main()
{
int BinarySearch(int array[],int key,int low,int high);
int array[10];
int i;
int key;
printf("请输入一个有序表的10个元素的值:");
for(i=0;i<10;i++)
scanf("%d",&array[i]);
printf("请输入查询的关键字:");
scanf("%d",&key);
if(BinarySearch(array,key,0,9)==FAILURE)
{
printf("查询无结果!\n");
exit(0);
}
printf("%d位于有序表的第%d个位置",key,BinarySearch(array,key,0,9));
getch();
return 0;
}
int BinarySearch(int array[],int key,int low,int high)
{
int mid;
if(high<low)
return -1;
else
{
mid=(low+high)/2;
if(key<array[mid])
return BinarySearch(array,key,low,mid-1);
else if(key==array[mid])
return (mid+1);
else
return BinarySearch(array,key,mid+1,high);
}
}
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define FAILURE -1
int main()
{
int BinarySearch(int array[],int key,int low,int high);
int array[10];
int i;
int key;
printf("请输入一个有序表的10个元素的值:");
for(i=0;i<10;i++)
scanf("%d",&array[i]);
printf("请输入查询的关键字:");
scanf("%d",&key);
if(BinarySearch(array,key,0,9)==FAILURE)
{
printf("查询无结果!\n");
exit(0);
}
printf("%d位于有序表的第%d个位置",key,BinarySearch(array,key,0,9));
getch();
return 0;
}
int BinarySearch(int array[],int key,int low,int high)
{
int mid;
if(high<low)
return -1;
else
{
mid=(low+high)/2;
if(key<array[mid])
return BinarySearch(array,key,low,mid-1);
else if(key==array[mid])
return (mid+1);
else
return BinarySearch(array,key,mid+1,high);
}
}