在nxn的二维数组中,我试图找到一个比它的邻居大的数字。 我使用分而治之算法来解决这个问题。
接下来,我试图通过展示一个合适的不变量来证明我的算法的正确性,即我通过用随机数填充4x4网格来接近它,除以它并找到所选择的每列的全局最大值(不确定这是方式证明算法的正确性)
我最困惑的是如何分析算法的运行时间,即在最坏的情况下需要访问nxn数组中的元素数量,最后是否有方法可以显示算法是否是无症状的最佳的。
答案 0 :(得分:1)
你不能拥有比O(n ^ 2)更好的复杂性,因为你需要访问数组的每个元素。如果你没有访问某个元素,可能会发现你的数组没有任何局部最大值,除了你没有访问过的元素中的全局最大值。蛮力算法(只检查每个元素是否为局部最大值)是O(n ^ 2),因此没有太多空间可以做得更好或更差。
重新划分和征服算法 - 对于给定的问题,这似乎是过度工程。你没有得到任何东西,并且你引入了额外的复杂性(你如何处理各部分之间的边界?)