数据结构与算法十:排序算法介绍、时间频度、时间复杂度、常用时间复杂度介绍
文章目录
前言
- 前面的数据结构到了现在可以到一段落了。
- 从第十章开始就要
学习 排序算法
了。 - 排序算法主要学习:
直接插入排序、希尔排序、简单选择排序、堆排序、冒泡排序、快速排序、归并排序、基数排序
等等。 - 这一节主要是
介绍排序的分类、还有衡量算法的优劣的方法时间复杂度,还有常用的时间复杂度等等
。
一、排序算法介绍
排序也称 排序算法
(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。
1.1 排序分类
- 内部排序:
指将需要处理的所有数据都加载到内部存储器中
进行排序。 - 外部排序法:
数据量过大
,无法全部加载到内存中,需要借助外部存储进行排序。 - 常见的排序算法分类(见下图):
二、算法的时间复杂度
2.1 度量一个程序(算法)执行时间的两种方法
-
事后统计的方法
这种方法可行, 但是有两个问题:一是要想对设计的算法的运行性能进行评测,需要实际运行该程序;二是所得时间的统计量依赖于计算机的硬件、软件等环境因素, 这种方式,要在同一台计算机的相同状态下运行,才能比较那个算法速度更快。 -
事前估算的方法
通过分析某个算法的时间复杂度
来判断哪个算法更优.
2.2 时间频度
2.2.1 基本介绍
时间频度:一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)
。
2.2.2 举例说明-基本案例
比如计算1-100所有数字之和, 我们设计两种算法: