- 十大排序算法
算法名称 | 复杂度 | 是否稳定 | 具体步骤 |
---|---|---|---|
选择排序 | n 2 n^2 n2 | 否 | 在[0,n-1]中找最小的那个放到左边,接着在[1,n-1]中找最小的放到左边 |
冒泡排序 | n 2 n^2 n2 | 是 | |
插入排序 | n 2 n^2 n2 | 是 | 跟冒泡排序类似,但是少了很多比较的步骤,每个元素都只往左边冒泡 |
快速排序 | n l o g n nlogn nlogn | 否 | 每次选定一个pos,把小于pos的放一边,大于的放一边,接着分治 |
堆排序 | n l o g n nlogn nlogn | 否 | 首先构建一个最大堆(指子节点一定比父节点小),接着把根节点跟最底下最右边那个节点互换,多次操作 |
归并排序 | n l o g n nlogn nlogn | 是 | |
桶排序 | |||
计数排序 | |||
基数排序 | |||
哈希排序 |
-
二分查找的复杂度: l o g n logn logn
-
树表:
参考树表 -
二叉排序树:比较的次数取决于树的高度,n个节点的平衡二叉树的高度为 l o g n + 1 logn+1 logn+1,则时间复杂度为 l o g n logn logn
-
B-树: l o g n logn logn?
-
B+树: l o g n logn logn?
-
红黑树的定义:
性质1:每个节点要么是⿊⾊,要么是红⾊。
性质2:根节点是⿊⾊。
性质3:每个叶⼦节点(NIL)是⿊⾊。
性质4:每个红⾊结点的两个⼦结点⼀定都是⿊⾊。
性质5:任意⼀结点到每个叶⼦结点的路径都包含数量相同的⿊结点