排序算法
排序算法算法稳定性:
如果在一个待排序的序列中,存在2个相等的数,在排序后这2个数的相对位置保持不变,那么该排序算法是稳定的;否则是不稳定的。
算法名称 | 平均时间复杂度 | 最好情况 | 最坏情况 | 空间复杂度 | 稳定性 |
---|---|---|---|---|---|
冒泡排序 | O(n²) | O(n) | O(n²) | O(1) | 稳定 |
选择排序 | O(n²) | O(n²) | O(n²) | O(1) | 不稳定 |
插入排序 | O(n²) | O(n) | O(n²) | (1) | 稳定 |
希尔排序 | O(nlogn) | O() | O(n²) | O(1) | 不稳定 |
归并排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(n + logn) | 稳定 |
快速排序 | O(nlogn) | O(nlogn) | O(n²) | O(logn) | 不稳定 |
堆排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(1) | 不稳定 |
时间复杂度O(n^2)级排序算法
冒泡排序
选择排序
插入排序
时间复杂度O(nlogn)级排序算法
希尔排序
归并排序
快速排序
堆排序
二叉树
B+树等
前、中、后序遍历
DLR–前序遍历(根在前,从左往右,一棵树的根永远在左子树前面,左子树又永远在右子树前面 )—根左右
LDR–中序遍历(根在中,从左往右,一棵树的左子树永远在根前面,根永远在右子树前面)—左根右
LRD–后序遍历(根在后,从左往右,一棵树的左子树永远在右子树前面,右子树永远在根前面) —左右根
举例说明:
举例1
举例2:
前序遍历结果:ABDHEICFJKG
中序遍历结果:DHBEIAJFKCG
后序遍历结果:HDIEBJKFGCA