一、十大经典排序算法
排序算法是算法中最基本算法之一
首先我们要知道几个相关的概念:
1. 时间复杂度(平均时间复杂度、最好情况、最坏情况)
2. 空间复杂度
3. 排序方式
4. 稳定性
时间复杂度: 执行算法需要的计算工作量
空间算法:执行算法所需的内存空间
排序方式:内部排序和外部排序
稳定性:排序后 2 个相等键值的顺序和排序之前它们的顺序相同
关于时间复杂度:
1.平方阶(O(n2)):冒泡排序、选择排序和插入排序
2.线性对数阶(O(nlog2n)): 归并排序、快速排序、堆排序和希尔排序
3.O(n+k):计数排序、桶排序
4.O(nxK):基数排序
稳定性:
稳定的排序方法:冒泡排序、插入排序,归并排序和基数排序、计数排序、桶排序
不稳定的排序方法: 选择排序、快速排序、希尔排序、堆排序
十大排序具体内容
二、七大经典查找算法
查找算法:是在信息中找到特定的信息元素。
- 查找算法分类:
- 静态查找 和 动态查找
注:静态或动态是针对被查找表而言的,动态查找:被查找数组(表)中有删除和插入等操作
- 无序查找 和 有序查找
无序查找:被查找的数组(表)有序无序均可。
有序查找:被查找的数组(表)必须是有序
- 平均查找长度(Average Search Length ASL):查找的值Value 和 比较的关键值的个数的期望值(简单说:查找成功次数的期望值)
查找成功的平均查找长度为:
ASL = PiCi;*
Pi:查找表中第i个数据元素的概率。
Ci:找到第i个数据元素时已经比较过的次数。
七大查找具体内容
本仓库持续更新中……
对一个的github地址:https://github.com/FlameDream/Learn_Algorithm