Java 如何找到这个函数的大O
我有一个函数,它在Java中迭代8x8多维数组。我试图理解findTheBoss()中此函数的大O。它在静态8x8网格中搜索给定字符串。我真的很想了解如何找到像这样的基本函数的大O。我想这是O(n^2),但我不确定。请帮助我理解如何找到这个函数的方程Java 如何找到这个函数的大O,java,loops,big-o,concept,Java,Loops,Big O,Concept,我有一个函数,它在Java中迭代8x8多维数组。我试图理解findTheBoss()中此函数的大O。它在静态8x8网格中搜索给定字符串。我真的很想了解如何找到像这样的基本函数的大O。我想这是O(n^2),但我不确定。请帮助我理解如何找到这个函数的方程 public static void FindTheBoss(String[][] bossGrid, String bossName){ for(int i=0; i < bossGrid.length; i++) {
public static void FindTheBoss(String[][] bossGrid, String bossName){
for(int i=0; i < bossGrid.length; i++)
{
//Iterate through each row?
for(int j=0; j < bossGrid[i].length; j++)
{
if(bossGrid[i][j].equals(bossName))
{
System.out.println("Found '" + bossName + "' at position "+ i + "," + j);
break;
}
}
}
}
public static void FindTheBoss(字符串[][]bossGrid,字符串bossName){
for(int i=0;i
你几乎是对的。但要小心,大O符号可能会很棘手,即使在你有条理的时候它并没有那么复杂
让我们总结一下代码的作用:您收到一个大小为NxN的2D数组和一个长度为s的字符串,并尝试在矩阵中查找该字符串(一次或多次)。即使有时你打破了这个循环,只要假设它不会发生那么多。然后,您只需迭代该矩阵的元素,并比较每个元素的两个字符串
基本上,如果你说这个算法是O(N^2),那么它可能足够公平了。但是要小心知道N是什么。如果你的网格可以有N行和M列,你会说算法是O(N*M),只有在正方形的情况下才是O(N^2)(这是一个非常常见的错误)
然而,我不会说这个算法是O(N^2),而是O(S*N^2)。事实上,平等者做什么?逐字符比较,直到字符不同。在N很小但字符串非常长的情况下,您会发现考虑到这一点很重要
注意:您可以阅读这篇关于String.equals()的复杂性的文章。如果比较预计算的长度或散列码,它显然比O(S)快,但这些都是内部优化,最坏的情况仍然是O(S)。你几乎是对的。但要小心,大O符号可能会很棘手,即使在你有条理的时候它并没有那么复杂 让我们总结一下代码的作用:您收到一个大小为NxN的2D数组和一个长度为s的字符串,并尝试在矩阵中查找该字符串(一次或多次)。即使有时你打破了这个循环,只要假设它不会发生那么多。然后,您只需迭代该矩阵的元素,并比较每个元素的两个字符串 基本上,如果你说这个算法是O(N^2),那么它可能足够公平了。但是要小心知道N是什么。如果你的网格可以有N行和M列,你会说算法是O(N*M),只有在正方形的情况下才是O(N^2)(这是一个非常常见的错误) 然而,我不会说这个算法是O(N^2),而是O(S*N^2)。事实上,平等者做什么?逐字符比较,直到字符不同。在N很小但字符串非常长的情况下,您会发现考虑到这一点很重要
注意:您可以阅读这篇关于String.equals()的复杂性的文章。如果比较预计算的长度或散列码,它显然比O(S)快,但这些都是内部优化,最坏的情况仍然是O(S)。你几乎是对的。但要小心,大O符号可能会很棘手,即使在你有条理的时候它并没有那么复杂 让我们总结一下代码的作用:您收到一个大小为NxN的2D数组和一个长度为s的字符串,并尝试在矩阵中查找该字符串(一次或多次)。即使有时你打破了这个循环,只要假设它不会发生那么多。然后,您只需迭代该矩阵的元素,并比较每个元素的两个字符串 基本上,如果你说这个算法是O(N^2),那么它可能足够公平了。但是要小心知道N是什么。如果你的网格可以有N行和M列,你会说算法是O(N*M),只有在正方形的情况下才是O(N^2)(这是一个非常常见的错误) 然而,我不会说这个算法是O(N^2),而是O(S*N^2)。事实上,平等者做什么?逐字符比较,直到字符不同。在N很小但字符串非常长的情况下,您会发现考虑到这一点很重要
注意:您可以阅读这篇关于String.equals()的复杂性的文章。如果比较预计算的长度或散列码,它显然比O(S)快,但这些都是内部优化,最坏的情况仍然是O(S)。你几乎是对的。但要小心,大O符号可能会很棘手,即使在你有条理的时候它并没有那么复杂 让我们总结一下代码的作用:您收到一个大小为NxN的2D数组和一个长度为s的字符串,并尝试在矩阵中查找该字符串(一次或多次)。即使有时你打破了这个循环,只要假设它不会发生那么多。然后,您只需迭代该矩阵的元素,并比较每个元素的两个字符串 基本上,如果你说这个算法是O(N^2),那么它可能足够公平了。但是要小心知道N是什么。如果你的网格可以有N行和M列,你会说算法是O(N*M),只有在正方形的情况下才是O(N^2)(这是一个非常常见的错误) 然而,我不会说这个算法是O(N^2),而是O(S*N^2)。事实上,平等者做什么?逐字符比较,直到字符不同。在N很小但字符串非常长的情况下,您会发现考虑到这一点很重要
注意:您可以阅读关于