找出最大最小值FindMaxMin()

采用分组比赛的算法:首先将L中的元素两两一组,分成L/2组(当n为奇数值有一个元素轮空),每组中的两个数通过一次比较确定本组的“较大”和“较小”,把至多n/2+1(当n为奇数时,需要把被轮空的元素加进来)个小组“较大”放在一起,运行Findmax()算法找出其中较大的,它就是L中的最大元素。类似的再把至多n/2+1个小组“较小”放到一起,运行Findmin()算法找出最小元素,即为L中最小的元素。

FindMaxMin()算法的伪代码为:

输入:n个数的数组L

输出:max,min

  1. 将n个元素两两一组分成n/2组;
  2. 每组比较,得到n/2个较小的和n/2个较大的;
  3. 在n/2个(n为奇数时,是n/2+1)较小中找最小min;
  4. 在n/2个(n为奇数时,是n/2+1)较大中找最大max;

 其中Findmax()和Findmin()算法函数代码如下(推导参考上一篇文章):

//找最大 
void Findmax(int L[],int len){
	int max,i;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值