归并排序(Python实现)
2024-10-19 07:33:03
1. 归并排序--while版本
def merge_sort_while(b_list):
'''归并排序--while版本'''
num = len(b_list)
if num <= 1:
return b_list
middle = num // 2
# left 采用归并排序后形成的有序的新列表
left_list = merge_sort_while(b_list[:middle])
# right 采用归并排序后形成的有序的新列表
right_list = merge_sort_while(b_list[middle:])
right_pointer = left_pointer = 0
res = []
# 将连个有序的子列表合并为一个新的列表
while left_pointer < len(left_list) and right_pointer < len(right_list):
if right_list[right_pointer] < left_list[left_pointer]:
res.append(right_list[right_pointer])
right_pointer += 1
else:
res.append(left_list[left_pointer])
left_pointer += 1
res += left_list[left_pointer:]
res += right_list[right_pointer:]
return res
2. 测试用例
if __name__ == '__main__':
b_list = [3,2,1,8,7,5]
print(merge_sort_while(b_list))
3. 算法时间复杂度分析
- 最坏时间复杂度:O(nlog2n)
- 最好时间复杂度:O(nlog2n)
- 稳定性:稳定
最新文章
- HTML5 音频播放器-Javascript代码(短小精悍)
- hdu 5071(2014鞍山现场赛B题,大模拟)
- IOS JSON
- GitHub的.gitignore文件设置
- Thank you for your resubmission. Performance - 2.3.10 We noticed that your app or its metadata includes irrelevant third-party platform information. Specifically, Android logo is mentioned in the
- 月考(cogs 1176)
- POJ #1141 - Brackets Sequence - TODO: POJ website issue
- Codeforces gym 100685 A. Ariel 暴力
- 删除_desktop.ini病毒文件
- HDU 4717The Moving Points warmup2 1002题(三分)
- 使用ASIHttoRequest需要导入的framework
- 20_学生选课数据库SQL语句练习题
- 修改WebView
- 说声PHP的setter&;getter(魔术)方法,你们辛苦了
- [2015-11-23]分享一个批处理脚本,创建iis站点及程序池
- weak alias
- ubuntu 的挂起与休眠
- UDP广播-缓冲区过小
- Cookie写不进去问题深入调查 https Secure Cookie
- iperf详细使用方法