@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