关于查找二维数组的最大值
基本方法是,双层循环,置一个初始的最大值,然后轮流判断。除了这种方法外,还有其他高效的方法吗本帖最后由 yulihua49 于 2017-06-21 15:40 编辑
潜水一厮 发表于 2017-06-21 00:24
你不换数据结构,不管用什么方法 总要把数据遍历一遍吧
如果只查一次,也就那样了。如果数组动态变化,并多次、频繁的查,还是建议更好的数据结构。
不遍历一次你怎么知道下一个被忽略的数不是最大的? 本帖最后由 yulihua49 于 2017-06-21 19:16 编辑
folklore 发表于 2017-06-21 16:04
不遍历一次你怎么知道下一个被忽略的数不是最大的?
把每个节点地址和值放到二叉树。如果动态数据也要对二叉树进行调整。
那么树的最大值就可以了。
最好是平衡树。multimap就很好用。
typedef struct node {
ini i;int j;
double V;//key
} node;
回复 5# yulihua49
要是能用其他数据结构,楼主也不会提这个问题吧
另外就是既然始终要的是最大值,用Max Heap不就好了,getMax永远都是O(1)
lxyscls 发表于 2017-06-22 09:26
回复 5# yulihua49
要是能用其他数据结构,楼主也不会提这个问题吧
只要最大值,你这个办法好。
如果只查一个最大值,最好的数据结构是堆,配套堆排序 回复 8# shang2010
堆排序其实只是堆的衍生品,堆并不是为了解决排序问题产生的 回复 1# riryka
乱序存储下,没有好办法
页:
[1]
2