一 时间复杂度和空间复杂度

  • 常数时间操作(执行时间固定的操作):常见的算术运算、位运算、赋值、比较、自增、自减、数组寻址操作。
  • 选择排序 O(n2) 等差数列 最高项
  • 空间复杂度(与功能无关,你自己必须开辟的空间):只需要几个有限变量则是O(1) 开辟一个数组O(n)
  • 最优解:在时间复杂度指标一定要低,满足后用较少的空间复杂度。

一个问题入手点:数据状况、问题本身的奇葩

二 对数器

  • 产生一个随机数组函数 GenerateRandomArray(int maxSize,int maxValue)

    三 二分法:二分不一定要有序,局部最优

  • 在一个有序数组中,找某个数是否存在 遍历O(n) 二分查找O(log**2**N)

  • 在一个有序数组中,找>=某个数最左侧的位置
  • 在一个有序数组中,找<=某个数最右侧的位置
  • 局部最小值问题:相邻两数不相等,[0]<[1],[N-2]>[N-1]—>导数趋势必定会存在最低点