当前位置: 首页 > 网络应用技术

Java算法进入和常用时间复杂性的开发

时间:2023-03-07 01:07:03 网络应用技术

  本文详细介绍了算法的引入,例如算法的定义,算法的时间复杂性的扣除以及常见算法的时间复杂性。

  用外行的术语,算法是描述问题的一种方法。在计算机字段中,可以说算法是完成任务,计算或求解步骤的一组指令。因此,任何代码片段都可以视为算法。

  该算法具有五个基本特征:输入,输出,贫困,确定性和可行性。

  输入和输出功能更易于理解,并且该算法具有零或多个输入。尽管输入参数对于绝大多数算法是必需的,对于单个情况,例如打印“ Helloworld!”,不需要输入参数,,不需要输入参数,,,不需要输入参数。因此,该算法的输入可以为零。该算法至少具有一个或多个输出。该算法必须输出,并且不需要输出。为什么使用此算法?可以将输出的形式打印出来,或者可以返回一个或多个值。

  贫困:指执行有限的步骤而无需无限流通的算法的自动末端,并且每个步骤都在可接受的时间内完成。实际上,死亡守则通常是编写的,这对贫困不满意。这里贫穷的概念不是纯粹的数学意义,而是在实际应用中的合理且可接受的“边界”。您说您写了算法。计算机需要计算过去的二十年,它将结束。从数学意义上讲,它很差,但是女儿-In -law已成为一名母亲-In -law,算法的重要性并不是很棒。

  确定:算法的每个步骤都有一定的含义,并且不会有双重性。在某些条件下,该算法只有一个执行路径,并且相同的输入只能具有唯一的输出结果。定义没有歧义。

  可行性:算法的每个步骤都必须是可行的,也就是说,每个步骤都可以通过有限的次数完成。可行性意味着可以将算法转换为程序上的程序并获得正确的结果。尽管还有在当前计算机行业中未实现的一种极其复杂的算法,不是说它在理论上不能实现,而是因为它太复杂了。我们当前的编程方法,工具和大脑限制了这项工作,但这是理论研究场问题不是我们现在必须考虑的范围。

  对于相同问题的不同解决方案,应选择最有效的算法以最大程度地减少运行时间或占用空间。运行时间的计算是计算算法的时间复杂性。

  算法需要执行算法的操作数(比例)。然后分析t(n)用n的变化并确定t的变化。(n)幅度。算法的时间复杂性记录为:t(n)= o(f(n))。这意味着为大小为n是增加的,算法执行时间的增长率与f(n)的增长率相同。f(n)是量表N的函数。

  通过这种方式,使用Capital O()反映算法的时间复杂性,我们称其为一个很大的O语句。此符号的o语句是“忽略了重要的内容以外的内容”,发音与顺序相同。

  算法的速度并不意味着时间,而是操作数量的增长速度。在正常情况下,如n),t(n)的最慢算法是最佳算法。

  如何得出算法的时间复杂性很大?这是一些规则:

  实际上,最重要的是,程序员的思考,如何获得运行时间数的表达,这需要某些数学技能,例如列数的一般公式!

  以下是一个常见的O运行时间复杂性:

  时间复杂性花费时间从小到大分类如下:

  o(1)<o(logn)<o(n)<o(nlogn)<o(n^2^)<o(n^3^)<o(2^n^)<o(n!)<o(n^n^)

  案例:寻求1+2+3+...+n?

  对于上述情况,我们可以使用时间复杂性编写非常快的算法代码:1):

  代码中的完整时间复杂性为n(1+1),根据大O派生规则,“使用常数1替换运行时间中的所有附加常数”,因为最终时间复杂性为O(1)。

  线性时间通常出现在循环结构中,与恒定时间O(1)相比,我们需要分析循环数量。

  在上述情况下,如果我们不采用高斯算法并使用正常循环算法,则该算法的时间复杂性为o(n),即线性时间,n是多少,n是多少步骤需要执行!

  在以下代码中,完整时间的复杂性为O(1+n+1),根据大O派生的规则,“考虑N的情况更大。删除具有较小影响的其他部分并保持最大部分”,这里o(这里o(这里o(这里o(这里o)(此处(此处O2始终以1+n+1的变化)。当n,2的影响越大时,2,因此去除常数2,最终的时间复杂性为o(n)。

  当数据增加n次时,增加日志数需要更多的时间。

  我们的两个点搜索,它的时间复杂性是o(logn),目前,默认值为2,为底部数字。此处是一个更简单的情况:

  情况中的总时间复杂性为O(logn+3),n的情况变大。其他小零件,保持最大的部分,删除常数3,然后最终结果为O(logn)

  当N足够大时,N的线性生长将沿正方形生长。

  排序算法选择的时间复杂性为O(n2),两个无序组的相交时间的复杂性也是O(n2)。LET对一个更简单的例子:

  该案的总时间复杂性为O(N2+3),N的情况变大。其他部件具有较小的影响,保留最大的部分并去除常数3,然后最终结果为O(N2)。

  对于多个循环,假设循环的时间复杂性为O(n),每个循环的循环数为a,b,c ...,那么该循环的时间复杂性为o(n×a×b×c ...)。分析时应从内而外分析这些周期。

  让我们找到找到n和时间复杂性的定律:因为当i = 0时,内部循环被执行n次。当i = 1时,它执行n-1次...当i = n-1时,执行一次。因此,执行总数为:

  然后使用大O衍生物的方法:“仅保留最高级别的项目”,然后删除N/2;“删除此项目乘法的常数”,即删除1/2,最后该代码的时间复杂性为O(O.N^2^)。

  对于按顺序执行的句子或算法,总时间复杂性等于最大时间复杂性:

  此时的时间复杂性为O(n^2^)。

  对于有条件的判断说明,总时间复杂性的时间复杂性等于时间复杂性与时间复杂性最高。

  此时的时间复杂性为O(n^2^)。

  寻求NE斐波那契数的价值,我们的常见方法是递归,因为它看起来更简单,如下所示:

  现在寻求时间复杂性。显然,运行时间n的数量小于2点钟,a(0)= a(1)= 1;n大于或等于2 a(n)= a(n -1) + a(n -2) + 1,这里1添加1IT是添加的。我们可以省略常数1并将其转换为t(n)= t(n -1) + t(n -2),这显然是递归编号列。

  我们使用线性代数来解决。上述线性复发编号的特征方程是:x^2 = x+1,可以获得以下解决方案:

  所以

  因为a1 = 1,a2 = 1,有

  解决方案必须

  因此,斐波那契报价的一般公式A(n)是:

  也就是说,使用NE fibonacci引号的值的时间复杂性用于找到出纳数列的时间复杂性。可以看出,这是索引级别的时间复杂性。

  我们还可以从上面看到:

  可能无法固定算法的特定时间复杂性。例如,我们按顺序依次在随机数阵列中找到某个数字。最好的情况IS1),但是这个数字也可能停留在最后一个位置,因此该算法的时间复杂性是O(n),这是最坏的情况。

  分析算法,一种方法是计算所有情况的平均值。该时间复杂性的计算方法称为平均时间复杂性。其他方法是计算最坏情况的时间复杂性。该方法称为最糟糕的时间复杂性。很难获得类比。通常,没有特殊的解释,它是指最糟糕的时间复杂性。我们的时间复杂性是最糟糕的时间复杂性。

  该算法的空间复杂性是通过计算算法所需的存储空间实现的。算法空间复杂度的计算公式记录为:s(n)= o(f(f(n)))。关于n的存储空间的语句函数。

  如果执行算法时所需的辅助空间是恒定的输入数据,则称其为适当的算法,并且空间复杂度为O(1)。空间复杂性。

  通常,我们所有人都使用“时间复杂性”来指代运行时间的需求,而“空间复杂性”是指空间需求。算法的优势和缺点主要是从算法的执行时间的两个方面和他们需要的存储空间。当使用“复杂性”而没有有限的单词时,很难计算,因为很难计算空间的复杂性,并且通常是指时间复杂性。

  作者:Liu Java