C语言 大数组中查找小数组
时间: 2023-07-30 21:06:46 浏览: 227
如果需要在一个大数组中查找一个小数组是否存在,可以使用双重循环进行暴力匹配。
假设大数组为 `bigArr`,长度为 `bigLen`,小数组为 `smallArr`,长度为 `smallLen`,可以使用以下代码:
```c
int match(int bigArr[], int bigLen, int smallArr[], int smallLen) {
for (int i = 0; i <= bigLen - smallLen; i++) {
int j;
for (j = 0; j < smallLen; j++) {
if (bigArr[i + j] != smallArr[j]) {
break;
}
}
if (j == smallLen) {
return i; // 返回匹配到的位置
}
}
return -1; // 未匹配到
}
```
其中,外层循环遍历大数组,内层循环遍历小数组,依次比较每个位置的值是否相等。如果内层循环结束后,所有元素都相等,则说明匹配成功,返回匹配到的位置;如果外层循环结束后仍未匹配到,则返回一个特殊值 `-1`。
使用方式示例:
```c
int bigArr[] = {1, 3, 5, 7, 9, 2, 4, 6, 8, 0};
int bigLen = sizeof(bigArr) / sizeof(int);
int smallArr[] = {2, 4, 6};
int smallLen = sizeof(smallArr) / sizeof(int);
int pos = match(bigArr, bigLen, smallArr, smallLen);
if (pos >= 0) {
printf("匹配到了,位置是:%d\n", pos);
} else {
printf("未匹配到\n");
}
```
该示例中,大数组 `bigArr` 中有 1、3、5、7、9、2、4、6、8、0 十个元素,需要匹配的小数组是 2、4、6。调用 `match` 函数,返回匹配到的位置 5。
阅读全文