排序算法个人总结(3)

/*

*归并排序

*/

归并排序的方法有很多,先介绍不常用的2-路归并

假设初始序列含有n个记录,则可看成是n个有序的子序列,每个子序列长度为1,然后两两归并,得到n/2取值上限个长度为2或1的有序子序列,再两两归并,如此重复,直至得到一个长度为n的有序序列为止。时间复杂度为O(nlogn)它是一种稳定的排序算法

初始序列:49 38 65 97  76 13 27


这种排序速度仅次于快速排序,为稳定排序算法,一般用于对总体无序,但是各子项相对有序的数列

/*

*拓扑排序(有向无环图的应用)

*/

拓扑排序是非常简单的一种排序算法,时间复杂度为O(n+e)n为顶点数,e为弧数

具体实现方法:

1.在有向图中选一个没有入度为0的顶点输出

2.在图中删除该顶点和所有以它为尾的弧

重复两个步骤直至全部顶点均已输出,或者当前图中不存在无前驱的顶点为止,当有2个到多个没有前驱的顶点时,可以任选一个,所以最终结果不是唯一的


刚开始选择C1或者C9,经过上述的步骤可以得到以下序列:

C1  C2  C3  C4  C5  C7  C9  C10  C11  C6  C12  C8

或者C9 C10 C11 C6  C1 C12 C4 C2 C3 C5 C7 C8或者其他

可以使用邻接表进行实现,设一个栈暂存所有入度为0的顶点


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值