热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

计算第二个最小值的有效方法

如何解决《计算第二个最小值的有效方法》经验,请问有什么解决方案?

给定矩阵,很容易计算最小值的值和索引:

A = rand(10);
[value, index] = min(A(:));

但是我还想恢复第二个最小值(最大值为idem).

我当然可以采用以下两种方法中的任何一种:

    将A转换为向量并对其进行排序.

    PROS:我可以恢复第二个,第三个...... n最小值

    缺点:如果A很大,排序很昂贵

    一旦找到A的最小位置,我可以将该值替换为大值(例如:Inf),然后min再次运行.

    PROS:比排序便宜

    缺点:我必须修改我的矩阵(并将修改后的值保存在aux变量中).在大型矩阵上重新运行min也很昂贵.

我想知道是否有更好的解决方案:

当计算min算法时必须跟踪到目前为止找到的最小值,直到新值具有较低的值(然后我们更新该值).相反,如果我们跟踪n到目前为止发现的最后一个最小值将允许恢复最小值n.

我可以实现这一点,但我想知道它是否是最好的方法,或者它是否已经实现.


推荐阅读
author-avatar
ji_yi
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有