题目:编写程序,在程序中初始化一个有序整数数组;从键盘输入一个整数,在该数组中用折半查找,输出查找结果(下标)。
知识点梳理:
1.用折半法在长度为N的数组中查找元素k:
int BinarySearch(int a[],int N,int k){
int high, low, mid;
low = 0;
high=N-1;
while (low <= high) {
mid = (low + high) / 2;
if (k< a[mid])
high = mid - 1;
else if (k > a[mid])
low = mid + 1;
else
return mid; // found
}
return -1; // not found
}
实验源代码:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//折半查找法
int BinarySearch(int a[],int N,int k){
int high, low, mid;
low = 0;
high=N-1;
while (low <= high) {
mid = (low + high) / 2;
if (k< a[mid])
high = mid - 1;
else if (k > a[mid])
low = mid + 1;
else
return mid; // found
}
return -1; // not found
}
void main()
{
int a[11];
int i,j,m;
srand((int)time(NULL));
for(i=0;i<11;i++){
a[i]=rand()%100+1;
}
printf("随机数组为:");
for(i=0;i<11;i++){
printf("%d ",a[i]);
}
printf("\n");
printf("请输入要删除的数:");
scanf("%d",&j);
m=BinarySearch(a,11,j);
if(m!=-1)
printf("%d",m);
else
printf("没找到");
}