前言

  • 本部分最主要的内容是时间和空间复杂度。
  • 时间复杂度之前还多少知道,空间复杂度用得比较少,以至于刷题时,人家说空间复杂度是O(1)时自己都没点数。

内容

  • 算法的定义,对特定问题求解步骤的一种描述。
  • 算法的特性

    • 有穷性
    • 确定性
    • 可行性
    • 有输入
    • 有输出
  • 算法的目标

    • 正确性
    • 可使用性
    • 可读性
    • 健壮性
    • 高效率和低存储量需求
  • 算法时间复杂度

    • 分析时间复杂度的步骤

      • 根据形参n确定问题规模
      • 算法中循环中最深层的诗句为基本语句,基本语句是不是与形参n有关系。
      • 用O进行标记,只保留最高阶项。
    • 不同时间复杂度的排序和比较

      • O(1) 常数阶 < O(logn) 对数阶 < O(n) 线性阶 < O(nlogn) < O(n^2) 平方阶 < O(n^3) < { O(2^n) < O(n!) < O(n^n) }
  • 空间复杂度

    • 函数体内新开辟的空间。
    • 如果临时变量与形参n确定问题规模无关,那么就是O(1)。

习题

李的习题

  • 比较有代表性的是递归求规模,这个部分不太会呢l,或者没有更多深入ionel
  • 33,有以下递归算法:
void mergesort(int i,int j)
{ 
 int m; 
 if(i!=j)
 {
 m=(i+j)/2; 
 mergesort(i,m);
 mergesort(m+1,j);
 merge(i,,j,m);
}
}

,分析mergesort(0,n-1)的时间复杂度

履历

第一版

  • 20181227左右看的内容,20181201整理的,也是48周的计划内容。

参考


im天行
35 声望198 粉丝