数据结构与算法十:排序算法介绍、时间频度、时间复杂度、常用时间复杂度介绍

前言

  • 前面的数据结构到了现在可以到一段落了。
  • 从第十章开始就要学习 排序算法了。
  • 排序算法主要学习:直接插入排序、希尔排序、简单选择排序、堆排序、冒泡排序、快速排序、归并排序、基数排序等等。
  • 这一节主要是介绍排序的分类、还有衡量算法的优劣的方法时间复杂度,还有常用的时间复杂度等等

一、排序算法介绍

排序也称 排序算法 (Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程

1.1 排序分类

  1. 内部排序:
    指将需要处理的所有数据都加载到内部存储器中进行排序。
  2. 外部排序法:
    数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。
  3. 常见的排序算法分类(见下图):
    数据结构与算法十:排序算法介绍、时间频度、时间复杂度、常用时间复杂度介绍

二、算法的时间复杂度

2.1 度量一个程序(算法)执行时间的两种方法

  1. 事后统计的方法
    这种方法可行, 但是有两个问题:一是要想对设计的算法的运行性能进行评测,需要实际运行该程序;二是所得时间的统计量依赖于计算机的硬件、软件等环境因素, 这种方式,要在同一台计算机的相同状态下运行,才能比较那个算法速度更快。

  2. 事前估算的方法
    通过分析某个算法的 时间复杂度 来判断哪个算法更优.

2.2 时间频度

2.2.1 基本介绍

时间频度:一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)

2.2.2 举例说明-基本案例

比如计算1-100所有数字之和, 我们设计两种算法:
数据结构与算法十:排序算法介绍、时间频度、时间复杂度、常用时间复杂度介绍

2.2.3 举例说明-忽略常数项

2.2.4 举例说明-忽略低次项

2.2.5 举例说明-忽略系数

2.3 时间复杂度

2.4 常见的时间复杂度

2.4.1 常数阶 O(1)

2.4.2 对数阶 O(log2n)

2.4.3 线性阶 O(n)

2.4.4 线性对数阶 O(nlog2n)

2.4.5 平方阶 O(n^2)

2.4.6 立方阶 O(n^ 3) 、K次方阶O(n^k)

2.5 最坏时间复杂度

三、算法的空间复杂度【简单了解即可】