排序算法学习(5)
来源:互联网 发布:用友软件凭证打印 编辑:程序博客网 时间:2024/05/16 16:40
1. 将2个各有N个元素的有序表归并成一个有序表,其最少的比较次数是:N
分析:归并排序最少比较N,最多比较2N-1.
当第一个有序表中所有的元素都小于(或大于)第二个表中的元素,只需要用第二个表中的第一个元素依次与第一个表的元素比较,总计比较n次。
分析二:A(a0,a1,...aN)、B(b0,b1,...bN)为长度为N的有序表。
假设A中元素都比B中要小,则先比较N次将A中元素取完,然后再依次取B中元素。所以,最小比较次数为N。
2. 在下列排序方法中,(D)方法可能出现这种情况,在最后一趟开始之前,所有元素都不在其最终应在的正确位置上。
A快排 B冒泡 C 堆排序 D 插入
分析:插入排序中, 如果最后一个数最小, 前面所有的数字都要移动位置。
3. 用邻接表表示图时,拓扑排序算法时间复杂度为O(N+E)
分析:严蔚敏的书上算法、分析。
求各顶点入度的时间复杂度是O(e),即边的个数。
建零入度顶点栈的时间复杂度是O(n),即顶点的个数。
每个顶点都需要进一次栈,出一次栈,然后把入度减一。执行的总次数也是边的个数。所以时间复杂度是O(n+e)。
分析二:增设一个存储入度的数组,一个用以组织入度为0的节点的栈S,则每个节点都需要入栈一次,一共n次,每个节点入度减1的操作一共e次,因此为O(n+e)。
4. 以下哪种排序算法需要开辟额外的存储空间?
A 选择排序B 归并排序 C快排 D堆排序
概念: 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。
特点: 归并排序的最好、最坏和平均时间复杂度都是 O(nlogn),而空间复杂度是 O(n), 比较次数介于(nlogn)/2和(nlogn)-n+1,赋值操作的次数是(2nlogn)。
点评: 归并排序算法比较占用内存,但却是效率高且稳定的排序算法。
分析:需要额外空间的排序算法:
*桶排序 (bucketsort)— O(n);需要O(k)额外空间
*计数排序 (countingsort)— O(n+k);需要O(n+k)额外空间
*合并排序 (mergesort)— O(n log n);需要O(n)额外空间
*二叉排序树排序 (Binarytree sort)— O(n log n)期望时间 ;O(n²)最坏时间;需要O(n)额外空间
*基数排序 (radixsort)— O(n·k);需要O(n)额外空间
5.为实现快排算法,待排序序列宜采用的存储方式是:顺序存储。
- 排序算法学习(5)
- 算法学习之排序(5)--快速排序
- 学习排序算法5--归并排序
- 算法学习(排序一)插入排序
- 算法学习(排序二)归并排序
- 算法学习(排序三)快速排序
- 算法学习(排序五)堆排序
- 排序算法(共同学习)
- 《算法》学习笔记(排序)
- 排序算法学习(1)
- 排序算法学习(2)
- 排序算法学习(3)
- 排序算法学习(4)
- 排序算法学习(6)
- 排序算法学习(一)
- 算法学习(归并排序)
- 算法学习(一)----基本排序算法
- 学习回顾算法(归并排序算法)
- 14-Vue自定义指令
- 【简记】Java Web 内幕——Cookie与Session简介和使用
- Ubuntu16.04搭建hadoop开发环境
- 2017年7月21日22:38:17
- oracle 11.2 rac 更改子网掩码引起的haip无法启动的处理过程
- 排序算法学习(5)
- Ubuntu Server搭建java web环境
- poj 1742 Coins
- 编程之美:一摞烙饼排序
- top查询机器情况
- 自动补全
- Sonya and A Problem without A Legend(DP+优化)
- codeforces 822C
- 机器学习