什么是稳定排序和不稳定排序
稳定排序和不稳定排序是算法>排序算法的两种分类。
稳定算法>排序算法保证在排序过程中,相同元素的相对位置不变。
不稳定算法>排序算法则不保证在排序过程中,相同元素的相对位置不变。
常见的稳定算法>排序算法包括: 冒泡排序 快速排序
常见的不稳定算法>排序算法包括: 选择排序 堆排序
二叉树前、中、后序遍历的规则
前序遍历:先访问根结点、再前序遍历左子树、最后前序遍历右子树;
中序遍历:中序遍历左子树、访问根节点、中序遍历右子树;
后续遍历:后序遍历左子树、后序遍历右子树、访问根结点;
队列和栈的区别
1.规则不同
队列:先进先出
栈:先进后出
2.对插入和删除的限定不同
队列:只能在表的一段进行插入,并在另一端进行删除
栈:只能在表的一端插入和删除
3.遍历数据速度不同
队列:基于地址指针进行遍历,可以从头或者尾部进行遍历,不能同时遍历,无需开辟新空间,在遍历过程中不影响数据结构,所以遍历速度快。
栈:只能从栈顶取数据,如果要取出栈底的数据,需要遍历整个栈,并且需要遍历的同时开辟空间,保持遍历前的一致性。
冒泡排序,插入排序,选择排序,希尔排序,归并排序,快速排序,堆排序的时间复杂度
-
冒泡排序(Bubble Sort):
- 平均时间复杂度:O(n^2)
- 最坏情况时间复杂度:O(n^2)
-
插入排序(Insertion Sort):
- 平均时间复杂度:O(n^2)
- 最坏情况时间复杂度:O(n^2)
-
选择排序(Selection Sort):
- 平均时间复杂度:O(n^2)
- 最坏情况时间复杂度:O(n^2)
-
希尔排序(Shell Sort):
- 平均时间复杂度:取决于增量序列的选择,一般为O(n^1.3)
- 最坏情况时间复杂度:取决于增量序列的选择,一般为O(n^2)
-
归并排序(Merge Sort):
- 平均时间复杂度:O(nlogn)
- 最坏情况时间复杂度:O(nlogn)
-
快速排序(Quick Sort):
- 平均时间复杂度:O(nlogn)
- 最坏情况时间复杂度:O(n^2)
-
堆排序(Heap Sort):
- 平均时间复杂度:O(nlogn)
- 最坏情况时间复杂度:O(nlogn)