实验7-1-7 查找整数

这篇文章描述了一个C语言程序,用于在一个给定的整数数组中搜索指定位置的数值,如果找到则输出其索引,否则返回NotFound

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

输入格式:

输入在第一行中给出两个正整数N(≤20)和X,第二行给出N个整数。数字均不超过长整型,其间以空格分隔。

输出格式:

在一行中输出X的位置,或者“Not Found”。

 

输入样例1:

5 7

3 5 7 1 9

输入样例2:

5 7

3 5 8 1 9

输出样例1:

2

输入样例2:

Not Found 

#include<stdio.h>
int main()
{
	int N,location;
	scanf("%d %d",&N,&location);
	int arr[100];
	int i=0;
	int flag=0;
	for(i=0;i<N;i++)
	{
		scanf("%d",&arr[i]);
	}
	for(i=0;i<N;i++)
	{
		if(arr[i]==location)
		{
			printf("%d",i);
			flag=1;
			break;
		}
	}
	if(!flag)
	{
		printf("Not Found");
	}
	return 0;
}

 

### 找到整数数组中频率最高的元素 #### 方法概述 为了找到整数数组中频率最高的元素,可以采用哈希表(字典)来记录每个元素的出现次数。随后通过遍历该哈希表找出最大频次对应的键值即可完成目标。 以下是两种常见编程语言的具体实现方式: --- #### Python 实现 利用 `collections.Counter` 类能够快速统计各元素的频率并返回最高频项。 ```python from collections import Counter def most_frequent_element(nums): counter = Counter(nums) # 统计各个元素出现的次数 max_freq_item = counter.most_common(1)[0][0] # 获取出现次数最多的一个元素 return max_freq_item # 测试样例 nums = [1, 3, 2, 3, 4, 3, 5] result = most_frequent_element(nums) print(f"Most frequent element is {result}") ``` 上述方法的时间复杂度主要由构建 `Counter` 对象决定,即 O(n),其中 n 是输入列表长度[^1]。 如果不想依赖额外库,则可手动维护一个字典存储频率信息: ```python def most_frequent_element_manual(nums): freq_dict = {} for num in nums: if num not in freq_dict: freq_dict[num] = 0 freq_dict[num] += 1 max_freq_num = None max_count = -float('inf') for key, value in freq_dict.items(): if value > max_count: max_count = value max_freq_num = key return max_freq_num # 测试样例 nums = [1, 3, 2, 3, 4, 3, 5] result = most_frequent_element_manual(nums) print(f"Most frequent element (manual method) is {result}") ``` 此版本同样具备线性时间复杂度 O(n),空间开销取决于不同数值的数量。 --- #### C++ 实现 在 C++ 中可以通过标准模板库中的 `unordered_map` 来高效处理这一问题。 ```cpp #include <iostream> #include <vector> #include <unordered_map> using namespace std; int mostFrequentElement(const vector<int>& nums){ unordered_map<int,int> frequencyMap; for(auto &num : nums){ // 遍历向量更新映射关系 ++frequencyMap[num]; } int result = nums[0], maxCount = 0; for(auto &[key,value] : frequencyMap){ if(value > maxCount){ maxCount = value; result = key; } } return result; } // 主函数测试部分 int main(){ vector<int> nums = {1, 3, 2, 3, 4, 3, 5}; cout << "Most Frequent Element: " << mostFrequentElement(nums) << endl; } ``` 这里也采用了单次扫描填充哈希表以及二次迭代查找峰值的方式,整体性能表现良好,在大数据集下依然保持稳定效率[^3]。 --- ### 总结说明 无论是选用高级脚本语言还是编译型语言解决此类问题,核心逻辑均围绕着建立关联容器跟踪数据分布特征展开讨论。最终选取哪种方案应视具体应用场景而定——比如开发速度优先考虑易读性强的语言;而对于运行效能敏感场合则倾向于底层控制力更强的选择。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值