排序算法学习(5)

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.为实现快排算法,待排序序列宜采用的存储方式是:顺序存储。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值