排序算法

排序算法

1. 排序的分类

  • 内部排序

    指将需要处理的所有数据都加载到内部存储器中进行排序。

  • 外部排序法

    数据量过大时,无法全部加载到内存中,需要借助外部存储进行排序。

排序算法的分类.png

2. 算法的时间复杂度

2.1 概述

一般情况下,算法中的基本操作语句的重复执行次数是问题规模n的某个函数,用T(n)来表示。若有某个辅助函数f(n),可以使得当n趋近于无穷大时,使得T(n)/f(n)的极限值为不等于0的常数,则称f(n)是T(n)的同数量级函数。记作T(n) = O(f(n)),称O(f(n))为算法的渐进时间复杂度,简称时间复杂度。

2.2 估算方法

  • 用常数1代替运行时间中的所有加法常数,也即常数项可忽略;eg.T(n) = 2n²+7n+6 => T(n) = 2n²+7n+1
  • 修改后的运行次数函数中,只保留最高阶项,也即低次项可忽略;eg.T(n) = 2n²+7n+1 => T(n) = 2n²
  • 去除最高阶项的系数,也即系数可忽略。eg.T(n) = 2n² => T(n) = n² => O(n²)

2.3 常见的时间复杂度

常见时间复杂度.png

说明:常见的算法时间复杂度由小到大排序结果依次为上述的1-8的顺序,应当尽可能避免使用指数阶的算法

2.4 平均时间复杂度和最坏时间复杂度

  • 平均时间复杂度是指所有可能的输入实例均以等概率出现的情况下,该算法的运行时间;
  • 最坏情况下的时间复杂度称为最坏时间复杂度。一般讨论的时间复杂度即为最坏时间复杂度
  • 平均时间复杂度和最坏时间复杂度是否一致与具体算法有关。
排序算法的时间复杂度.png
posted @ 2023-04-09 16:14  GaoakaJie  阅读(48)  评论(0)    收藏  举报