在N个数中查找x的位置。

在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;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    这道题目可以使用线性查找算法来解决。具体实现步骤如下:

    1. 从数组下标为0开始遍历数组,一直遍历到数组下标为N-1为止。

    2. 对于每个遍历到的元素,与x进行比较,如果相等,就返回这个元素在数组中的下标。

    3. 如果遍历完成后,仍然没有找到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)


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^