只遍历一次求第二大的值

不使用sort,只遍历一次怎么拿到第二大值?

可以通过遍历数组,初始拿到前两个的值,每遍历一个元素就判断大小交换变量,保证每次遍历,a始终比b大,b也始终比后面遍历的值要大,如果不是则交换

 let arr = [4, 5, 6, 2, 10]
  let a = arr[0]
  let b = arr[1]
// 之所以加1 就是为了让它多循环一次,不然最后一个为最大值的话,那么b将会是最大值,所以我要让它多判断一次 a 是否大于 b
 for (let i = 2; i < arr.length + 1; i++) {
    a < b && ([a, b] = [b, a]);
    b < arr[i] && ([b, arr[i]] = [arr[i], b]);
 }
console.log(b);
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
假设你有一个二维列表 `data`,其中包含多行多列的数据,现在要遍其中的某一列,找到该列中的最大,并输出该最大第一次出现的位置。可以使用如下代码实现: ```python def find_max_in_column(data, column_index): max_num = data[0][column_index] # 假设第一个元素为最大 max_index = 0 # 假设最大位置为第一行 for i in range(1, len(data)): if data[i][column_index] > max_num: max_num = data[i][column_index] max_index = i return max_num, max_index data = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 9, 8], [7, 6, 5]] column_index = 1 # 第二列 max_num, max_index = find_max_in_column(data, column_index) print("第", column_index+1, "列中的最大为:", max_num) print("最大第一次出现的位置为:第", max_index+1, "行") ``` 输出结果为: ``` 第 2 列中的最大为: 9 最大第一次出现的位置为:第 3 行 ``` 在这个例子中,我们同样定义了一个名为 `find_max_in_column` 的函数,该函数接受两个参数 `data` 和 `column_index`,分别表示二维列表和要遍的列的索引。函数中使用一个循环遍每一行,比较该行指定列的与之前的最大,如果当前更大,则更新最大和最大位置。最后,函数返回最大和最大位置。在主程序中,我们调用这个函数,并输出结果。不同的是,我们只需要输出最大第一次出现的位置,因此不需要遍整个列表,只需要找到最大后返回即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值