本题要求实现一个在数组中查找指定元素的简单函数。 函数接口定义: int search( int list[], int n, int x ); 其中list[]是用户传入的数组;n(≥0)是list[]中元素的个数;x是待查找的元素。如果找到 则函数search返回相应元素的最小下标(下标从0开始),否则返回−1。 裁判测试程序样例: #include <stdio.h> #define MAXN 10 int search( int list[], int n, int x ); int main() { int i, index, n, x; int a[MAXN]; scanf("%d", &n); for( i = 0; i < n; i++ ) scanf("%d", &a[i]); scanf("%d", &x); index = search( a, n, x ); if( index != -1 ) printf("index = %d\n", index); else printf("Not found\n"); return 0; } /* 你的代码将被嵌在这里 */
时间: 2024-03-05 13:52:31 浏览: 51
使长度为n的线性表-c版本数据结构(严老师)
以下是实现题目要求的完整代码:
```c
#include <stdio.h>
int search(int list[], int n, int x) {
int i;
for (i = 0; i < n; i++) {
if (list[i] == x) { // 如果找到元素 x,返回下标 i
return i;
}
}
return -1; // 如果没找到,返回 -1
}
int main() {
int i, index, n, x;
int a[MAXN];
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
scanf("%d", &x);
index = search(a, n, x);
if (index != -1) {
printf("index = %d\n", index);
} else {
printf("Not found\n");
}
return 0;
}
```
解释:
题目要求实现一个在数组中查找指定元素的函数,如果找到则返回相应元素的最小下标,否则返回 -1。
我们可以采用简单的线性查找算法来实现这个函数。具体来说,就是从数组的第 0 个元素开始遍历,一直遍历到第 n-1 个元素,看看是否有元素等于待查找元素 x。如果找到了,就返回相应元素的下标 i;如果遍历完整个数组都没找到,就返回 -1。
这个算法的时间复杂度是 O(n),可以满足本题的要求。如果数组是有序的,我们可以采用二分查找算法,时间复杂度可以降到 O(log n)。
阅读全文