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)
  • 稳定性:稳定

最新文章

  1. HTML5 音频播放器-Javascript代码(短小精悍)
  2. hdu 5071(2014鞍山现场赛B题,大模拟)
  3. IOS JSON
  4. GitHub的.gitignore文件设置
  5. 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
  6. 月考(cogs 1176)
  7. POJ #1141 - Brackets Sequence - TODO: POJ website issue
  8. Codeforces gym 100685 A. Ariel 暴力
  9. 删除_desktop.ini病毒文件
  10. HDU 4717The Moving Points warmup2 1002题(三分)
  11. 使用ASIHttoRequest需要导入的framework
  12. 20_学生选课数据库SQL语句练习题
  13. 修改WebView
  14. 说声PHP的setter&amp;getter(魔术)方法,你们辛苦了
  15. [2015-11-23]分享一个批处理脚本,创建iis站点及程序池
  16. weak alias
  17. ubuntu 的挂起与休眠
  18. UDP广播-缓冲区过小
  19. Cookie写不进去问题深入调查 https Secure Cookie
  20. iperf详细使用方法

热门文章

  1. Python类中的装饰器在当前类中的声明与调用
  2. STM32串口DMA超时接收方法,可大大节约CPU时间
  3. Java编程的逻辑 (87) - 类加载机制
  4. mac使用minikube
  5. 使用cnpm 安装vue.js
  6. mysql之表格的关联关系
  7. mysql中的多表查询
  8. 最大团&amp;优化
  9. 关于histry的pushstate 和 popstate事件的应用
  10. Git查看两个版本之间修改了哪些文件