在N个数中查找x的位置
本题要求完成函数的设计,实现在数组中查找x的位置并返回主函数输出。如x不存在,则输出"Not found!"。
函数接口定义:
int find(int a[], int x );
裁判测试程序样例:
#include "stdio.h"
#define N 5
void main()
{
int a[N],i; int x,k ;
for(i=0;i<N;i++)
scanf("%d",&a[i]);
scanf("%d",&x); /* 输入被查找的x */
k=find(a,x); /* 求x在a数组中的位置 */
if(k==-1) printf("Not found!");
else printf("Loc is %d",k );
}
/* 编写的代码将放置到这里 */
输入样例:
在这里给出一组输入。例如:
10 8 5 6 7
6
输出样例:
在这里给出相应的输出。例如:
Loc is 4
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
数组元素都是乱序的,就 直接 for 循环一个个判断吧
int find(int a[], int x )
{
int i = 0, index = -1;
for (i = 0; i < N; i++)
if (a[i] == x)
{
index = i + 1;
break;
}
return index;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:这道题目可以使用线性查找算法来解决。具体实现步骤如下:
从数组下标为0开始遍历数组,一直遍历到数组下标为N-1为止。
对于每个遍历到的元素,与x进行比较,如果相等,就返回这个元素在数组中的下标。
如果遍历完成后,仍然没有找到x,则返回"Not found!"。
代码实现如下:
int search(int nums[], int N, int x) {
for(int i=0; i<N; i++) {
if(nums[i] == x) { // 如果找到了x,则返回它在数组中的下标
return i;
}
}
return -1; // 如果遍历完数组后仍然没有找到x,则返回"Not found!"
}
注意:这里将返回"Not found!"的情况改为了返回-1,因为函数的返回值是int类型,无法返回字符串。如果需要返回字符串,可以将函数的返回值改为char*类型,并返回"Not found!"字符串。
时间复杂度:O(N)
空间复杂度:O(1)