请问如何查找连续两个数组中的数
比如以下实例
假设有2个整型数组:
list1[] = { 12, 8, 3, 5, 9, 2, 1, 0, 15, 17 };
list2[] = { 2, 3, 6, 9, 10, 12, 15, 17, 19, 27 };
首先,分2行输出这2个数组中的元素;
然后,提示用户输入要查找的整数,存放在变量n中;
接着,使用顺序查找法在list1中查找n,如果找到,输出其位置,如果没有,则提示用户:“该数值在list1中不存在”;
最后,使用二分查找法在list2中查找n,如果找到,输出其位置,如果没有,则提示用户:“该数值在list2中不存在”;
#include <stdio.h>
#include <stdlib.h>
int main()
{
//定义数据存储数组
int arr1[] = {0, 3, 4, -1, 6, 2, 3};
int arr2[] = {2, 3, 5, 6, 8, 10, 12, 14};
int n; //要查找的整数
//输出两个数组的元素
printf("数组1:");
for(int i = 0; i < sizeof(arr1) / sizeof(arr1[0]); i++) {
printf("%d ", arr1[i]);
}
printf("\n");
printf("数组2:");
for(int i = 0; i < sizeof(arr2) / sizeof(arr2[0]); i++) {
printf("%d ", arr2[i]);
}
printf("\n");
//提示用户输入要查找的整数
printf("请输入要查找的整数:");
scanf("%d", &n);
//使用顺序查找法在第一个数组中查找n
int position = -1; //记录n在第一个数组中的位置
for(int i = 0; i < sizeof(arr1) / sizeof(arr1[0]); i++) {
if(arr1[i] == n) {
position = i;
break;
}
}
//在第一个数组中找到n
if(position != -1) {
printf("在第一个数组中,%d的位置是:%d\n", n, position);
}
//在第一个数组中未找到n
else {
printf("在第一个数组中,%d不存在\n", n);
}
//使用二分查找法在第二个数组中查找n
int left = 0, right = sizeof(arr2) / sizeof(arr2[0]) - 1;
int mid; //middle,中间位置
position = -1;
while(left <= right) {
mid = left + (right - left) / 2;
if(arr2[mid] == n) {
position = mid;
break;
}
else if(arr2[mid] > n) {
right = mid - 1;
}
else {
left = mid + 1;
}
}
//在第二个数组中找到n
if(position != -1) {
printf("在第二个数组中,%d的位置是:%d\n", n, position);
}
//在第二个数组中未找到n
else {
printf("在第二个数组中,%d不存在\n", n);
}
return 0;
}