python 实现归并排序算法

yizhihongxing

下面是关于“Python实现归并排序算法”的完整攻略。

1. 归并排序算法简介

归并排序是一种基于分治思想的排序算法,它将待排序的序列分成若干个子序列,每个子序列都是有序的,然后再将子序列合并成一个有序的序列。归并排序的时间复杂度为O(nlogn),是一种稳定的排序算法。

2. 归并排序算法实现

下面是Python实现归并排序算法的代码:

def merge_sort(arr):
    if len(arr) <= 1:
        return arr
    mid = len(arr) // 2
    left = merge_sort(arr[:mid])
    right = merge_sort(arr[mid:])
    return merge(left, right)

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

在这个代码中,我们定义了两个函数:merge_sort()merge()merge_sort()函数用于将待排序的序列分成若干个子序列,每个子序列都是有序的,然后再将子序列合并成一个有序的序列。merge()函数用于将两个有序的子序列合并成一个有序的序列。

3. 归并排序算法示例

下面是两个示例,演示了如何使用Python实现归并排序算法。

3.1 示例一

arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_arr = merge_sort(arr)
print(sorted_arr)

在这个示例中,我们定义了一个待排序的序列arr,然后使用merge_sort()函数对其进行排序。最后,我们使用print()函数输出排序后的序列。

3.2 示例二

arr = [9, 8, 7, 6, 5, 4, 3, 2, 1]
sorted_arr = merge_sort(arr)
print(sorted_arr)

在这个示例中,我们定义了一个待排序的序列arr,然后使用merge_sort()函数对其进行排序。最后,我们使用print()函数输出排序后的序列。

4. 总结

归并排序是一种基于分治思想的排序算法,它将待排序的序列分成若干个子序列,每个子序列都是有序的,然后再将子序列合并成一个有序的序列。Python实现归并排序算法的代码非常简单,只需要定义两个函数:merge_sort()merge()。归并排序的时间复杂度为O(nlogn),是一种稳定的排序算法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 实现归并排序算法 - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • 如何在Python中实现梯度下降以寻找局部最小值

    梯度下降(Gradient Descent)是一种常见的优化算法,在机器学习中常用于寻找局部最小值。下面是在Python中实现梯度下降的完整攻略: 一、准备工作 在使用梯度下降算法前,首先需要加载必要的库,包括numpy和matplotlib。 import numpy as np import matplotlib.pyplot as plt 二、定义优化…

    python-answer 2023年3月25日
    00
  • python-docx的简单使用示例教程

    “python-docx的简单使用示例教程”是一篇介绍python-docx 包的文章。Python-docx是一个Python库,用于读取、编写和创建Microsoft Word 2007/2010/2013/2016文件(.docx)的操作。以下是详细的完整攻略: 安装python-docx 安装python-docx 使用pip来安装python-do…

    python 2023年5月18日
    00
  • Python实现获取视频时长功能

    下面是关于Python实现获取视频时长功能的完整攻略: 安装依赖库 首先,需要安装一个名为pydub的Python库来处理音频文件。可以直接使用pip安装: pip install pydub 获取视频文件 获取视频文件的方式有很多,这里仅提供两种常见的获取方式: 从本地文件获取: from pydub.utils import mediainfo vide…

    python 2023年6月2日
    00
  • Pycharm-community-2020.2.3 社区版安装教程图文详解

    下面我来详细讲解“Pycharm-community-2020.2.3 社区版安装教程图文详解”的完整攻略。 1. 下载安装包 首先在官网(https://www.jetbrains.com/pycharm/download/)下载 PyCharm 社区版的安装包。选择相应的操作系统版本下载,下载完成后解压。 2. 安装 PyCharm 双击解压后的安装包,…

    python 2023年6月5日
    00
  • Python 中的range(),以及列表切片方法

    Python中的range()函数是用来生成一系列整数的函数,常用于循环结构中。 range()函数的语法格式为:range(start, stop, step) 其中,start表示起始整数(默认为0),stop表示终止整数(不包含该整数),step表示步长(默认为1)。 示例1:用range()函数生成一个简单的整数序列 num_list = list(…

    python 2023年5月14日
    00
  • Python函数之zip函数的介绍与实际应用

    Python函数之zip函数的介绍与实际应用 什么是zip函数 zip函数是Python的一个内置函数,可以将多个序列(列表、元组等)按照相同位置进行组合,形成一个新的元组序列。具体来说,就是将第一个序列的第一个元素、第二个序列的第一个元素……依次组合,形成一个元素个数与序列中元素个数最少的序列一样的新序列(下文简称“zip序列”)。 zip函数的语法如下:…

    python 2023年5月13日
    00
  • python-try-except:pass的用法及说明

    当我们在使用Python编写程序过程中,经常会遇到一些异常错误,如文件找不到,除数为0等。为了避免这些错误导致程序异常终止,可以使用 try 和 except 语句来处理异常情况。 try 语句的工作原理是,首先执行 try 后面的语句块,如果执行成功,就直接跳过 except 语句;如果执行过程中出现了异常,则跳转到 except 语句块中处理异常。 如果…

    python 2023年5月13日
    00
  • Python字符串特性及常用字符串方法的简单笔记

    Python字符串特性及常用字符串方法的简单笔记 1. 字符串特性 Python的字符串是一种序列类型,可以用单引号(”)或双引号(””)来表示。例如: a = ‘Hello World!’ b = "Python is fun!" Python的字符串也可以用三引号(”’ 或 “””) 来表示多行字符串。例如: c = ”’Hel…

    python 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部