首页 > 编程语言 >python归并排序

python归并排序

时间:2022-12-23 21:13:53浏览次数:40  
标签:__ 归并 right python lists merge len 排序 left

  1. 采用了分治法,把序列不断的等分序列,最后分成一个之后,再把它两两合并叠加起来,利用了扑克牌两个正序序列进行排序合并
  2. 时间复杂度 nlogn
  3. 代码
def merge_sort(lists):
if len(lists) <= 1:
return lists
middle = len(lists) // 2
left = merge_sort(lists[:middle])
right = merge_sort(lists[middle:])
return merge(left, right)


def merge(left: list, right: list):
c = []
i = j = 0
while i < len(left) and j < len(right):
if left[i] < right[j]:
c.append(left[i])
i += 1
else:
c.append(right[j])
j += 1
if i == len(left):
for i in right[j:]:
c.append(i)
else:
for i in left[i:]:
c.append(i)
return c


if __name__ == '__main__':
list = [1, 5, 2, 3, 8, 9, 10, 11, 12, 14, 14, 7]
print(merge_sort(list))

 

标签:__,归并,right,python,lists,merge,len,排序,left
From: https://www.cnblogs.com/sardine96/p/17001629.html

相关文章

  • 快速排序
    本题要求实现快速排序的一趟划分函数,待排序列的长度1<=n<=1000。函数接口定义:1intPartition(SqListL,intlow,inthigh);其中L是待排序表,使排序后的数据从小......
  • 堆排序
    本题要求实现堆排序中的筛选函数,待排序列的长度1<=n<=1000。函数接口定义:1voidHeapAdjust(HeapTypeH,ints,intm);其中L是待排序表,使排序后的数据从小到大排......
  • 初学python
    本章内容:Python的种类Python的环境Python入门(解释器、编码、pyc文件、脚步传入参数、变量、输入、流程控制与缩进、while循环)练习题Python的种类Cpyt......
  • python:文件操作:文件的读取
               ......
  • python:了解异常
    当检测到一个错误时,Python解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的“异常”,也就是我们常说的BUGbug单词的诞生早期计算机采用大量继电器工作,马克......
  • python:异常的捕获方法
    世界上没有完美的程序,任何程序在运行的过程中,都有可能出现:异常,也就是出现bug导致程序无法完美运行下去。我们要做的,不是力求程序完美运行。而是在力所能及的范围内,对可......
  • python:模块
    Python模块(Module),是一个Python文件,以.py结尾.模块能定义函数,类和变量,模块里也能包含可执行的代码.模块的作用:python中有很多各种不同的模块,每一个模块都可以......
  • python:包
           ......
  • python:第三方包
           ......
  • python:数据容器:元组
         ......