评价算法的优劣,采用BigO
时间复杂度、空间复杂度
常数阶:O(1),表示执行时间恒定的算法
对数阶:O(log2n),对数:如果a的x次方等于N(a>0,且a不等于1),那么数x叫做以a为底N的对数(logarithm),记作x=logaN, 。其中,a叫做对数的底数,N叫做真数。
线性阶:O(n)
线性对数阶:O(nlog2n)
平方阶:O(n^2)
所耗时间从小到大:O(1) < O(log2n) < O(n) < O(nlog2n) < O(n^2) < O(n^3)…< O(n^n)
十大经典排序算法
image.png
名词解释:
n:数据规模
k:"桶"的个数
In-place:占用常数内存,不占用额外内存
Out-place:占用额外内存
稳定性:排序后 2 个相等键值的顺序和排序之前它们的顺序相同
算法核心逻辑
选择排序:把第一个没有排序过的元素设置为最小值,然后遍历每个没有排序过的元素;
冒泡排序:相邻的数两两比较,左边数大于右边数,则交换;
插入排序:从第二个元素开始,右边的数小于左边的数,则插入(通过交换);
归并排序:将数组分成两半,左边排序,右边排序,然后进行合并(其中左排序和右排序都是递归调用该算法);
快速排序:
计数排序:
基数排序:
桶排序:
代码案例
对数器