数据结构

概念

数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。

数据结构的三个方面

算法

概念

解决特定问题的求解步骤的描述,通俗说就是解决问题的技巧和捷径。

算法的五个特性s

零个输入的情况,比如我们要打印HelloWorld,就不要输入

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("HelloWorld");
    }
}

算法设计的要求

  • 正确性:算法的正确性是指算法至少具有输入,输出和加工处理无歧义,可以正确反映问题的需求,获得正确的答案。
    • 一般关于“正确”的理解包含四个层次:
      • 算法程序没有语法错误
      • 算法程序能够根据正确的输入的值得到满足要求的输出结果
      • 算法程序能够根据错误的输入的值得到满足规格说明的输出结果
      • 算法程序对于精心设计的,极其刁难的测试数据都能满足要求的输出结果
  • 可读性:算法设计的目的就是解决问题活着帮助别人解决问题,一定要是便于阅读和理解。不然算法只能算很失败。
  • 健壮性:对于各种不合理的输入,要有相应的处理,不能直接产生异常或报错。
  • 时间效率高和空间存储量低:解决以上问题之后,尽量要求算法效率高,占用内存小。

时间复杂度

概念

进行算法分析时,语句总的执行次数T(n)是关于输入规模n的函数,分析T(n)随着n的变化情况,时间复杂度记作T(n)=O(f(n))。随着输入规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作时间复杂度。(时间=执行次数)

求解时间复杂度的方法(求O())

  • 用常数1代替运行时间中的所有加法常数
  • 保留修改后的运行函数中的最高阶项
  • 如果最高项存在,把最高项系数化为1

常用的时间复杂度排序

O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)

空间复杂度

一般我们使用空间换取时间,因为一般来说,空间上的提高比较好实现。