线性查找
#include <stdio.h>
#include <math.h>
void find_nine(int numbers[]) {
int i;
for(i = 0; i < 15; i++) {
if(numbers[i] == 9){
printf("%d\n",i);
return;
}
}
printf("null");
}
int main() {
int numbers[15];
int i;
for (i = 0; i < 15; i++) {
scanf("%d", &numbers[i]);
}
find_nine(numbers);
return 0;
}
折半查找
#include <stdio.h>
int main() {
int n;
int k;
int numbers[1000001],numbers2[1000001];
int i,j,low,high;
// 反复读入数字和查找数字的数量
while (scanf("%d%d", &n, &k) != EOF) {
// 读入给定的数字
for (i = 0; i < n; i++) {
scanf("%d", &numbers[i]);
}
for (j = 0; j < k; j++) {
// 读入待查找的数字,
scanf("%d", &numbers2[j]);
}
// 请在下面完成查找读入数字的功能
for (j = 0; j < k; j++ ) {
low = 0;high = i-1;
while(low <= high){
int mid = (low + high) / 2;
if(numbers[mid] == numbers2[j]){
printf("%d",mid + 1);
break;
}
if (numbers2[j] > numbers[mid]){
low = mid + 1;
}
if (numbers2[j] < numbers[mid]){
high = mid - 1;
}
}
if(low > high) printf("0");
if(j != k - 1) printf(" ");
}
}
return 0;
}