在数组A[0...n−1]中,有所谓的魔术索引,满足条件A[i]=i。给定一个有序整数数组,编写一种方法找出魔术索引,若有的话,在数组A中找出一个魔术索引,如果没有,则返回-1。(数据没有重复),用c语言
时间: 2024-11-13 17:22:13 浏览: 13
仿真器配置-互联网大厂java工程师面试题及其答案
在C语言中,你可以通过遍历数组的方式来寻找魔术索引。由于数组已经有序,并且我们知道如果存在魔术索引,它必须满足`A[i] == i`,我们可以从数组的一端开始逐个检查每个元素是否等于它的下标位置。
下面是一个简单的C语言函数实现这种方法:
```c
#include <stdio.h>
int findMagicIndex(int A[], int n) {
// 遍历数组,从左到右
for (int i = 0; i < n; ++i) {
if (A[i] == i) { // 如果找到满足条件的元素
return i; // 返回当前的索引
}
}
// 如果没有找到魔术索引,返回 -1
return -1;
}
int main() {
int array[] = {0, 1, 2, 3, 4}; // 示例数组
int size = sizeof(array) / sizeof(array[0]);
int magicIndex = findMagicIndex(array, size);
if (magicIndex != -1) {
printf("魔术索引找到了: %d\n", magicIndex);
} else {
printf("没有找到魔术索引,返回值: %d\n", magicIndex);
}
return 0;
}
```
阅读全文