算法

来源:互联网 发布:米内数据库 编辑:程序博客网 时间:2024/05/23 16:10

1. 算法:算法是解决具体问题的步骤描述,在计算机中表现为有限序列的指令集,每条指令执行多个步骤

2. 算法的五个特点: 确定性,可行性,有穷性,有输入和有输出

3. 算法的五个要求: 正确性,可读性,健壮性,时间效率高和储存量低
特点和要求,容易混淆所以可以对比记忆
4. 算法效率的度量方法

  • 时间复杂度
  • 空间复杂度

计算机的运行一个有高级语言消耗的时间主要和一下几个因素有关

  • 算法的策略,方法
  • 机器执行指令的速度
  • 问题的输入规模
  • 编译器产生的代码质量
    所以说抛开硬件和编译器来说时间主要取决与算法和输入规模这里我们主要讨论算法
    其中主要讨论衡量算法的指标———时间复杂度

以下列举几个常见的时间复杂度

1. 常数阶O(1)

printf("hello wold");//运行一次printf("1 + 1 = %d", 2);//运行一次

2. 线性阶O(n)

for(int i = 0; i <= n; i++)    printf("i = %d\n",i);//运行N次

3. 平方阶O(n^2)

for(int i = 0; i <= n; i++)    for(int j; j <= n; j++)        printf("j = %d",j);

对数阶O(log2n)

int i = 1;while (i < n){    i = i * 2;}

有很多个2相乘直到2x > n,
所以运行了x = log2n次
时间复杂度为O(log2n)
4. nlog(n)阶O(nlog(n))

5 .立方阶O(n3)

6 .指数阶O(zn)

常见的时间复杂度所消耗的实际那顺序为:

O(1) < O(n) < O(n*log(n) < O(n2) < O(n3)) < O(2n) < O(n!) < O(nn)

原创粉丝点击