C语言写一个函数find,实现从数组a[11,2,6,5,9,7]查找元素x=9,返回x在数组中的序号,如果找不到则返回-1。 3.当a[n]递增有序时,有没有高效的算法?
时间: 2024-09-27 07:06:53 浏览: 30
在C语言中,你可以编写一个名为`find`的函数来查找给定数组中的元素。这里是一个简单的线性搜索实现:
```c
#include <stdio.h>
int find(int a[], int n, int x) {
for (int i = 0; i < n; i++) {
if (a[i] == x) { // 如果找到元素x
return i; // 返回它的索引
}
}
return -1; // 如果遍历完整个数组都没有找到x,返回-1表示未找到
}
int main() {
int arr[] = {11, 2, 6, 5, 9, 7};
int x = 9;
int array_size = sizeof(arr) / sizeof(arr[0]);
int result = find(arr, array_size, x);
if (result != -1) {
printf("元素 %d 的位置是:%d\n", x, result + 1); // 注意索引是从0开始的
} else {
printf("元素 %d 没有在数组中找到。\n", x);
}
return 0;
}
```
对于已排序数组(递增有序),可以使用二分查找(Binary Search)来提高查找效率,这是一种时间复杂度为O(log n)的算法。不过在这个例子中,由于题目要求是针对无序数组,我们依然使用了线性查找。
阅读全文