# java-algorithm **Repository Path**: cjm1103/algorithm-java ## Basic Information - **Project Name**: java-algorithm - **Description**: 算法的java实现 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-08-07 - **Last Updated**: 2021-02-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # algorithm-java #### 项目介绍 算法的java实现 #### 时间复杂度 算法的时间复杂度是一个函数,它定性描述了该算法的运行时间。这是一个关于代表 算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶 项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,它考察当输入值大小趋近 无穷时的情况。 #### 时间复杂度的计算方法 1. 一般情况下,算法中基本操作(进行计算的操作)重复执行的次数是**问题规模n的某个 函数,用T(n)表示** 。若有某个辅助函数f(n),使得当n趋近于无穷大时, T(n)/f(n)的 极限值为不等于零的常数,则称f(n) 是 T(n)的同数量级函数。记作T(n) = O(f(n)), 称O(f(n))为算法的渐进时间复杂度,简称时间复杂度。 2. 先找出基本操作,根据相应的各语句确定它的执行次数,再找T(n)的同数量级。 例 : ``` for(i=1; i<=n; ++i) { for(j=1; j<=n; ++j) { c[i][j] = 0;//该步骤属于基本操作执行次数:n的平方次 for(k=1; k<=n; ++k) c[i][j] += a[i][k] * b[k][j];//该步骤属于基本操作执行次数:n的三次方次 } } ``` T(n) = n^3 + n^2。则可以找出同数量级f(n) = n^3。根据T(n)/f(n)可得到常数c =1 则该算法的时间复杂度:T(n) = O(n ^ 3). #### 时间复杂度的分类 按数量级递增排列,常见的时间复杂度有: 常数阶O(1),对数阶O(log2^n),线性阶O(n), 线性对数阶O(nlog2n),平方阶O(n^2),立方阶O(n^3),..., k次方阶O(n^k),指数阶O(2^n)。随着问题规模n的不 断增大,上述时间复杂度不断增大,算法的执行效率越低。