algorithm - 使用较少的比较查找最大值二维数组 N*N

标签 algorithm multidimensional-array

我想用较少的比较在 C 中的二维数组 N*N 中找到最大值。我可以简单地使用 O(N^2) 算法来完成,但我认为它太慢了。

于是,我又想了一个办法。我简单的循环一次,同时按行和列搜索,尽量降低复杂度。 (我猜 O(2(n-1)))你可以在这张图片中看到我正在尝试做什么。

Table

我使用相同的循环来检查列和行的内容。

我想知道有没有更快的?喜欢用 O(N log N) 复杂度对二维数组进行排序?假设值未排序。

最佳答案

如果 M x M 元素的二维数组没有以任何方式排序,那么你不会比 O(M^2) 做得更好。

请记住,矩阵有 M^2 个元素,因此对它们进行排序的复杂度为 O(M^2 log M^2),因为最合适的排序是 O(N log N),这里 N = M^ 2.

关于algorithm - 使用较少的比较查找最大值二维数组 N*N,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36222923/

相关文章:

c# - 将二维数组的二维数组转换为单个二维数组

java - 从集合中选择一个随机元素

可以将字符串(已知最大长度)编码为固定长度字符串的算法?

python - 在文件中查找最常见的子字符串模式

java - 如何实现嵌套的 ArrayList?

c - GCC 中的动态分配指针数组不匹配

php - 相同格式的多维数组之和

algorithm - 将组排序到列表中的决策树

c# - 升序排列

java - 使用java删除另一个数组中的数组