问题描述:给出一个数组,包含N个整数,那么需要比较多少次找到最大值和最小值
注意:要想得到最大值和最小值,遍历一遍数组是不可避免的。我们能减少的就是减少比较次数来提高效率
方法一、遍历一遍数组,同时得到最大值和最小值
具体是,定义一个max 和 min,每遍历一个数,就分别和max 和 min比较一次,直到处理完所有的数据
比较次数: N+N = 2N
方法二、我们可以把数组中的数据两两分组,分组内找出最大值 和 最小值,之后在最大值的那部分找出最大值,在最小值那部分找出最小值
比较次数:
两两比较,较小值放到左边,较大放右边,这时比较N/2次
之后,得到的最大值部分是 N/2个数,最小值部分是N/2个数
之后在 最大值部分 取出最大值。比较次数N/2

本文探讨了如何在数组中寻找最大值和最小值的不同方法,包括直接遍历、分组比较和分治策略。通过比较次数分析,得出在不破坏原数组的情况下,最佳方法的比较次数为1.5N。此外,还提出了寻找数组中第二大连数的分治解法,以降低比较次数。
最低0.47元/天 解锁文章
9790

被折叠的 条评论
为什么被折叠?



