0
点赞
收藏
分享

微信扫一扫

C语言数组查找(线性查找 折半查找)


线性查找

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


举报

相关推荐

0 条评论