算法分析与实践作业4(二分归并排序)

该博客探讨了针对2的幂次个不同元素的数组进行排序的问题。首先,通过形式化描述阐述了问题,然后解析问题并设计了一个排序算法,其时间复杂度在最坏、最好情况下均为O(nlogn)。文章通过递归树分析进一步验证了这一复杂度,并提供了算法的源码实现。
摘要由CSDN通过智能技术生成

@TOC

1.问题

[描述算法问题,首选形式化方式(数学语言),其次才是非形式化方式(日常语言)]
对n个不同的数构成的数组A[1…n]进行排序,其中n=2^k

2.解析

[问题的理解和推导,可用电子版直接在此编写,也可用纸笔推导,拍照嵌入本文档]
在这里插入图片描述

3.设计

[核心伪代码]
在这里插入图片描述
在这里插入图片描述

4.分析

[算法复杂度推导]
算法比较次数最坏情况为n-1,时间复杂度为O(nlogn)
算法比较次数最好情况为n/2,时间复杂度为O(nlogn)
得平均复杂度为O(nlogn)
递归树复杂度:树的各层的权值相加,
得n-1+n-2+n -4 +…+n - 2k-1
=nk -(1+2+4+…+2k-1)
=nk -(2k-1),由已知得n = 2k (k = logn)
=nlogn - n+ 1

5.源码

[github源码地址]

https://github.com/RyokoJiang/homework/blob/main/Suanfa_4.cpp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值