博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构(python) —— 【13: 归并排序之一次归并】
阅读量:3944 次
发布时间:2019-05-24

本文共 723 字,大约阅读时间需要 2 分钟。

归并排序之一次归并

假设现在的列表分两段有序,将其合成为一个有序列表这种操作称为一次归并

一次归并

原理演示:

一次归并

代码

原理很简单,代码也很简单:

author: Bluetime: 2020-08-05QQ: 2458682080'''# 现在的列表分两段有序,将其合成为一个有序列表def merge(li, low, mid, high):    i = low    j = mid + 1    li_temp = []    while i <= mid and j <= high:   # 只要左右两边都有数        if li[i] < li[j]:            li_temp.append(li[i])            i += 1        else:            li_temp.append(li[j])            j += 1    # while执行完,肯定有一部分没数了    while i <= mid:   # 左边有数,右边没数        li_temp.append(li[i])        i += 1    while j <= high:  # 右边有数,左边没数        li_temp.append(li[j])        j += 1    li[low: high+1] = li_templi = [2, 4, 5, 7, 1, 3, 6, 8]merge(li, 0, 3, 7)print(li)

结果为:

[1, 2, 3, 4, 5, 6, 7, 8]

该算法相当于把整个列表遍历了一遍进行交换,因此时间复杂度为: O(n)

转载地址:http://gfiwi.baihongyu.com/

你可能感兴趣的文章
Linux监测某一时刻对外的IP连接情况
查看>>
CentOS7 最小环境安装Jumpserver 1.0版脚本
查看>>
X-Security X的安全控制
查看>>
openVAS的安装
查看>>
Centos 6.5 初始安装无网卡驱动解决方法
查看>>
linux中的网桥bridge
查看>>
linux中的teaming与bonding
查看>>
LVM
查看>>
用shell切分文件--split
查看>>
python中判断字符是否为中文
查看>>
Python - 利用zip函数将两个列表(list)组成字典(dict)
查看>>
python-全角转半角
查看>>
Python pass语句作用与用法
查看>>
Java double,float设置小数点位数
查看>>
PyCharm & Jupyter
查看>>
为什么要用Jupyter Notebook
查看>>
sklearn中的LogisticRegression模型
查看>>
pandas.get_dummies 的用法
查看>>
机器学习-训练模型的保存与恢复(sklearn)
查看>>
Spark(二): spark-submit命令详解
查看>>