我做了一份国外某大学的数据结构考试题,结果竟然……

这篇博客作者分享了一份数学结构考试题目,涉及归并排序、堆排序的时间复杂度分析,以及n2与n3的关系,均摊时间复杂度的重要性和计算,树的遍历,最小生成树的Kruskal算法避免环的方法,Dijkstra算法的优先查找树实现,以及Floyd-Warshall算法的动态规划思想。
摘要由CSDN通过智能技术生成

前情提要

作者:wwhhyy

最近很长时间没有更新了,有朋友让我麻烦看一下他要考试科目的去年的试题,出于一个计算机人的好奇心,我看了下这份试卷的难度,并做了下这份试卷,发现还是非常具有挑战性的。而且可能和国内的数据结构算法的考试题的风格不太一样。那么在这里我就把这些题目分享给大家,希望能够给大家一点小小的帮助。

第一题A
问题:请描述归并排序的归并过程?以及归并排序的时间复杂度,还有如何计算出归并排序的时间复杂度

归并排序的归并过程,n个元素的数组,先把它分成两部分进行归并排序,然后就是归并过程

我们使用两个指针,指向这两个子数组,然后使用一个temp数组来存储我们归并过程中的排序好的数组,比较两个指针对应的数组的值的大小,把小的那个放入temp数组,然后把对应指针推移,直到两个指针都指向子数组的最后的地方。最后再把temp数组的值放入数组当中,完成归并排序

时间复杂度 O ( n l o g n ) O(nlogn) O(nlogn)

解释,计算表达式如下

T ( n ) = 2 T ( n / 2 ) + n T(n)=2T(n/2)+n T(n)=2T(n/2)+n

经过数学计算得到最终的时间复杂度

第一题的B
问题:请描述堆的定义,并且解释如何用堆来进行升序排序以及堆排序的时间复杂度和对应的解释。

堆的定义:

a heap is a specialized tree]-based data structure which is essentially an almost complete tree that satisfies the heap property: in a max heap, for any given C, if P is a parent node of C, then the key (the value) of P is greater than or equal to the key of C. In a min heap, the key of P is less than or equal to the key of C.

如何用堆来进行升序排序

我们用无序数组构建成一个最大堆,然后把第一个位置上的元素和堆末尾的元素对换,之后让堆的大小减一,之后把堆再次构建,重复上面过程,得到一个有序的升序数列

时间复杂度 O ( n l o g n ) O(nlogn) O(nlogn)

理由:每次构建堆的时间复杂度是logn,我们要构建n次堆,所以时间复杂度如上

第三
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值