排序算法的介绍
排序也成排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。
排序的分类:
1内部排序:需要处理的所有数据都加载到内部存储器中进行排序
2外部排序:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序
常见的排序算法:
算法的时间复杂度
时间频度:一个算法中的语句执行次数称为语句频度或时间频度,记为T(n)
时间复杂度:一般情况下,算法中的基本操作语句的重复执行次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)), O(f(n))为算法的渐进时间复杂度,简称时间复杂度;
T(n)不同,但时间复杂度可能相同。
常见的时间复杂度 |
---|
常数阶O(1) |
对数阶O(log2n) |
线性阶O(n) |
线性对数阶O(nlog2n) |
平方阶 |
立方阶 |
k次方阶 |
指数阶 |
常数阶
无论代码多少行,只要没有循环等复杂结构,那这个代码的时间复杂度就都是O(1)
int i = 1;
int j = 2;
++i;
j++;
int m = i + j;
对数阶
int i = 1;
while(i < n) {
i = i * 2;
}
线性阶
for(int i = 1; i <=n; i++) {
j = i;
j++;
}
线性对数阶
for(int m = 1; m <=n; m++) {
i = 1;
while(i < n){
i = i * 2;
}
}
平方阶
for(i = 1; i < n; i++) {
for(j = 1; j < n; j++
}
平均时间复杂度和最坏时间复杂度
平均时间复杂度是指有可能的输入实例均以等概率出现的情况下,该算法的运行时间
最坏情况下的时间复杂度称最坏时间复杂度。一般讨论的时间复杂度均是最坏情况下的时间复杂度
平均时间复杂度和最坏时间复杂度是否一致和算法有关