用单次循环可同时找出数组最大值和最小值:先判断数组是否为空,再以首元素初始化max和min,从索引1开始遍历,逐个比较更新。时间复杂度o(n),无需排序。

用循环找数组中的最大值和最小值,核心是遍历每个元素,边走边比较、更新记录。不需要排序,时间效率高(O(n)),适合大多数场景。
初始化最大值和最小值
不能直接设成 0 或其他固定数,否则遇到全负数或全正数会出错。稳妥做法是用数组第一个元素初始化:
- max = arr[0],min = arr[0]
- 然后从索引 1 开始循环(跳过第 0 个)
- 如果数组为空,需提前判断并处理,避免越界
单次循环同时更新两个值
不必写两个独立循环,一个 for 就能搞定。每次取一个元素,分别跟当前 max 和 min 比较:
- 若 arr[i] > max → 更新 max
- 若 arr[i]
- 顺序不重要,两个判断互不影响
代码示例(以 JavaScript 为例)
(其他语言逻辑一致,仅语法微调)
function findMaxMin(arr) {
if (arr.length === 0) return { max: null, min: null };
let max = arr[0];
let min = arr[0];
for (let i = 1; i max) max = arr[i];
if (arr[i]
<h3>注意边界情况</h3>
<p>实际使用时容易忽略这些细节:</p>
- 空数组:必须检查,否则 arr[0] 报错
- 只有一个元素:循环不执行,max 和 min 都等于它,结果正确
- 含 NaN 或非数字:建议先过滤或校验类型,避免比较失效











