牛客专题练习01
解析:B 归并排序的最好、最坏、平均时间都是O(nlogn),但是简单排序有些情况下是O(n).
解析:B 插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止
解析:稳定:如果 a
原本在 b
前面,而 a = b
,排序之后 a
仍然在 b
的前面;
不稳定:如果 a
原本在 b
的前面,而 a = b
,排序之后 a
可能会出现在 b
的后面;
解析:稳定排序:冒泡、选择、归并、基数
不稳定排序:希快选堆
解析:BFS是广度优先遍历,DFS是深度优先遍历。
对于一些特殊的图,比如只有一个顶点的图,其BFS生成树的树高和DFS生成树的树高相等。
一般的图,根据图的BFS生成树和DFS树的算法思想,BFS生成树的树高比DFS生成树的树高小
解析:insert sort, quick sort ,merge sort分别是插入、快速、归并排序
所以最坏时间复杂度分别是:n^2 、n^2、 nlogn
各种排序法 最好时间 平均时间 最坏时间 简单选择排序 O(n^2) O(n^2) O(n^2) 直接插入排序 O(n) O(n^2) O(n^2) 冒泡排序 O(n) O(n^2) O(n^2) 希尔排序 O(n) O(logn) O(n^s) 1<s<2 快速排序 O(nlogn) O(nlogn) O(n^2) 堆排序 O(nlogn) O(nlogn) O(nlogn) 归并排序 O(nlogn) O(nlogn) O(nlogn)
解析:希尔排序法(缩小增量法) 属于插入类排序,是将整个无序列分割成若干小的子序列分别进行 插入排序 的方法。
解析:基本逆序,相当于最坏情况下,求时间复杂度最优。
此题,指在最坏情况下,求时间复杂度最低
冒泡、改进冒泡、选择、快排,插入排序,均为o(n^2) 堆排序是o(nlogn) 归并排序是o(nlogn)
解析:快排不适合对基本有序的数据集合进行排序
解析:下列哪种排序算法是稳定排序?
bubble sort(冒泡排序)、quick sort(快速排序)heap sort(堆排序)merge sort(归并排序)
Selection sort(选择排序)
不稳定排序:“快选希堆”,原地排序:“快选希堆冒”
各种排序的各种时间复杂度
各种排序法 | 最好时间 | 平均时间 | 最坏时间 | 空间复杂度 | 稳定性 | 复杂性 |
简单选择排序 | O(n^2) | O(n^2) | O(n^2) | O(1) | 不稳定 | 不简单 |
直接插入排序 | O(n) | O(n^2) | O(n^2) | O(1) | 稳定 | 简单 |
冒泡排序 | O(n) | O(n^2) | O(n^2) | O(1) | 稳定 | 简单 |
希尔排序 | O(n) | O(logn) | O(n^s) 1<s<2 | O(1) | 不稳定 | 不简单 |
快速排序 | O(nlogn) | O(nlogn) | O(n^2) | O(nlog2n) | 不稳定 | 简单 |
堆排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(1) | 不稳定 | 不简单 |
归并排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(n) | 稳定 |
不简单 |