求最小值

题目描述

输入一些整数,求最小值

输入

多组测试数据 首先输入1个整数n表示测试组数 然后每行首先输入1个整数m,再输入m个整数

输出

对于每组测试数据输出1行,内容为m个整数的最小值

样例输入
2
2 1 2
5 3 4 6 9 3

样例输出
1
3

#include<stdio.h>
int main()
 {
 	int n,i,m,j;
 	while(scanf("%d",&n)!=EOF)
 	{
 		for(i=1;i<=n;i++)
 		{
 		int k,min=100000;
 		scanf("%d",&m);
 		for(j=1;j<=m;j++)
 		{

			scanf("%d",&k);
 		if(min>k)
 		min=k;
 		}
 		printf("%d\n",min);
 		}
 	}
 		
 	
     return 0;
 } 
### 递归最小值的实现方式 递归最小值的基本思路是将问题划分为更小的子问题,通过递归地解子问题来最终得到整体的最小值。具体实现可以采用不同的策略,例如基于数组的二分递归或线性递归。 #### 基于数组的二分递归最小值 当数组长度大于2时,可以采用二分策略,将数组划分为前一半和后一半,分别递归出两部分的最小值,然后进行比较返回更小的那个。如果数组长度为1,则直接返回该元素;如果数组长度为2,则比较两个元素并返回较小的一个。 ```python def find_min(arr, start, end): if start == end: return arr[start] mid = (start + end) // 2 min1 = find_min(arr, start, mid) min2 = find_min(arr, mid + 1, end) return min(min1, min2) ``` 该方法利用分治策略降低了比较次数,适用于大规模数组的最小值查找[^2]。 #### 基于线性递归的最小值查找 另一种方式是采用线性递归,从数组的最后一个元素开始递归,逐步比较当前元素与前面子数组的最小值。当递归到数组的第一个元素时作为终止条件返回该元素;否则,递归调用函数解前面n-1个元素的最小值,并与当前元素进行比较。 ```c int findMin(int arr[], int n) { if (n == 1) { return arr[0]; } int min_rest = findMin(arr, n - 1); return (arr[n - 1] < min_rest) ? arr[n - 1] : min_rest; } ``` 该方法在C++中常用于递归数组元素的最大值和最小值,通过递归地比较当前元素和前面部分的最小值实现整体最小值的查找[^3]。 #### 递归方法的适用性与性能 递归方法适用于结构清晰且支持递归操作的数据结构,如数组和链表。对于较小规模的数据集,递归方法具有较高的可读性和实现效率。然而,递归调用栈的深度会随着数据规模增长而增加,可能导致栈溢出问题。因此,在大规模数据处理中,建议采用非递归版本以减少栈溢出风险[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值