算法是用于解决特定问题的一系列的执行步骤,使用不同算法,解决痛一个问题,效率可能相差非常大.
package zh.algorithm; public class Fibonacci { // 方法1:递归 public static int fib(int n) { if (n <= 1) return n; return fib(n - 1) + fib(n - 2); } // 方法2:循环 public static int fib2(int n) { if (n <= 1) return n; int first = 0; int second = 1; for (int i = 0; i < n - 1; i++) { int sum = first + second; first = second; second = sum; } return second; } public static void main(String[] args) { // System.out.println(fib(0)); // System.out.println(fib(1)); // System.out.println(fib(2)); // System.out.println(fib(3)); // System.out.println(fib(4)); // System.out.println(fib(5)); // Output:0 1 1 2 3 5 System.out.println(fib2(64));// Output 1640636603 } }
方法1:比较不同算法对同一组输入的执行处理时间(事后统计法),缺点
方法2:从以下维度来评估算法的优劣:
一般用大O表示法来描述复杂度,它表示的是数据规模n对应的复杂度,可以忽略常数,系数,低阶.
复杂度排序
O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n3) < O(2n) < O(n!) < O(nn)
原文:https://www.cnblogs.com/doupi/p/12927390.html