python 排序算法总结及实例详解

Python排序算法总结及实例详解

排序算法是计算机科学中的基本问题之一,它的目的是将一组数据按照一定的顺序排列。在Python中,我们可以使用多种排序算法来对数据进行排序。本文将介绍常见的排序算法及其Python实现,并提供两个示例说明。

常见的排序算法

冒泡排序

冒泡排序是一种简单的排序算法,它的基本思想是通过不断交换相邻的元素,将较大的元素逐渐“冒泡”到数组的末尾。具体来说,冒泡排序的过程如下:

  1. 从数组的第一个元素开始,依次比较相邻的两个元素,如果前一个元素比后一个元素大,则交换它们的位置。
  2. 重复上述步骤,直到数组中的所有元素都被排序。

冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1)。

选择排序

选择排序是一种简单的排序算法,它的基本思想是通过不断选择未排序部分中的最小元素,将其放到已排序部分的末尾。具体来说,选择排序的过程如下:

  1. 在未排序部分中找到最小的元素,将其放到已排序部分的末尾。
  2. 重复上述步骤,直到数组中的所有元素都被排序。

选择排序的时间复杂度为O(n^2),空间复杂度为O(1)。

插入排序

插入排序是一种简单的排序算法,它的基本思想是将未排序部分中的每个元素插入到已排序部分的合适位置。具体来说,插入排序的过程如下:

  1. 将数组的第一个元素视为已排序部分,将其余元素视为未排序部分。
  2. 依次将未排序部分中的每个元素插入到已排序部分的合适位置。
  3. 重复上述步骤,直到数组中的所有元素都被排序。

插入排序的时间复杂度为O(n^2),空间复杂度为O(1)。

快速排序

快速排序是一种高效的排序算法,它的基本思想是通过不断地划分数组,将其分成较小和较大的两部分,然后对这两部分分别进行排序。具体来说,快速排序的过程如下:

  1. 选择一个基准元素,将数组分成两部分,一部分包含所有小于基准元素的元素,另一部分包含所有大于基准元素的元素。
  2. 对这两部分分别进行快速排序。
  3. 重复上述步骤,直到数组中的所有元素都被排序。

快速排序的时间复杂度为O(nlogn),空间复杂度为O(logn)。

Python实现排序算法

冒泡排序

def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        for j in range(0, n-i-1):
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]
    return arr

选择排序

def selection_sort(arr):
    n = len(arr)
    for i in range(n):
        min_idx = i
        for j in range(i+1, n):
            if arr[j] < arr[min_idx]:
                min_idx = j
        arr[i], arr[min_idx] = arr[min_idx], arr[i]
    return arr

插入排序

def insertion_sort(arr):
    n = len(arr)
    for i in range(1, n):
        key = arr[i]
        j = i-1
        while j >= 0 and key < arr[j]:
            arr[j+1] = arr[j]
            j -= 1
        arr[j+1] = key
    return arr

快速排序

def quick_sort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[len(arr)//2]
    left = [x for x in arr if x < pivot]
    middle = [x for x in arr if x == pivot]
    right = [x for x in arr if x > pivot]
    return quick_sort(left) + middle + quick_sort(right)

示例说明

示例1:使用冒泡排序对数组进行排序

在这个示例中,我们将使用冒泡排序对一个数组进行排序。下面是Python代码:

arr = [64, 34, 25, 12, 22, 11, 90]
print(bubble_sort(arr))

输出结果如下:

[11, 12, 22, 25, 34, 64, 90]

这个结果表示我们成功地使用冒泡排序对数组进行了排序。

示例2:使用快速排序对数组进行排序

在这个示例中,我们将使用快速排序对一个数组进行排序。下面是Python代码:

arr = [64, 34, 25, 12, 22, 11, 90]
print(quick_sort(arr))

输出结果如下:

[11, 12, 22, 25, 34, 64, 90]

这个结果表示我们成功地使用快速排序对数组进行了排序。

总结

本文介绍了常见的排序算法及其Python实现,包括冒泡排序、选择排序、插入排序和快速排序。我们提供了两个示例,分别使用冒泡排序和快速排序对数组进行排序。排序算法是计算机科学中的基本问题之一,掌握这些算法对于编写高效的程序非常重要。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 排序算法总结及实例详解 - Python技术站

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

相关文章

  • Python多线程编程(七):使用Condition实现复杂同步

    我会详细讲解“Python多线程编程(七):使用Condition实现复杂同步”的完整攻略。 什么是Condition 在 Python 的 threading 库中,Condition 类是用于线程之间同步的一种机制,该类提供了 wait()、notify() 和 notifyAll() 等方法,使得一个线程可以暂停等待某个条件满足,并且在满足该条件时被唤…

    python 2023年5月19日
    00
  • python中使用iterrows()对dataframe进行遍历的实例

    使用iterrows()方法可以对DataFrame进行遍历。以以下数据为例: import pandas as pd df = pd.DataFrame({‘name’:[‘Amy’, ‘Bob’, ‘Charlie’], ‘age’:[26, 28, 25], ‘score’:[85, 91, 89]}) 示例一 我们可以通过iterrows()对Dat…

    python 2023年5月14日
    00
  • 2021年最新版Python安装及使用教学

    2021年最新版Python安装及使用教学 安装Python 前往Python官网下载Python,选择对应操作系统和位数的安装包。推荐下载最新版本,目前是Python3.9.6版本。 安装Python。在安装过程中,注意勾选“Add Python 3.x to PATH”选项,以便在终端中能够访问Python。 验证Python是否成功安装。打开终端(对于…

    python 2023年5月30日
    00
  • Python pywin32实现word与Excel的处理

    我来给你讲一下“Python pywin32实现word与Excel的处理”的完整实例教程。 1. Pywin32是什么? 在讲解具体的实现教程之前,我们需要了解一下 pywin32 是什么。Pywin32是Windows扩展模块的集合,它为Python提供了访问Windows API的能力,让Python能够与Windows本地的应用程序进行交互,这些应用…

    python 2023年5月13日
    00
  • Python如何转换字符串大小写

    下面详细讲解一下“Python如何转换字符串大小写”的完整攻略。 1. 如何将字符串转换成大写字母 在Python中,可以使用字符串对象的内置方法upper()将字符串转换成大写字母,具体的语法如下: string_name.upper() 其中,string_name表示要进行转换的字符串,代码示例如下: name = "alice" …

    python 2023年6月5日
    00
  • Python列表的定义及使用

    以下是详细讲解“Python列表的定义及使用”的完整攻略。 在Python中,列表是一种常用的数据类型,可以用来存储一组有序的数据。本文将介绍Python列表的定义及使用,并提供两个示例说明。 定义列表 定义一个列表可以使用方括号[],并在其中添加元素,元素之间用逗号隔开。例如: lst = [1, 2, 3, 4, 5] 上述代码定义了一个包含5个元素的列…

    python 2023年5月13日
    00
  • Python实现统计文本中的字符数量

    当我们需要统计某个文本中各个字符出现的次数时,可以使用Python语言来实现。下面是实现该功能的完整攻略。 1. 准备工作 首先需要一个文本文件,例如 text.txt 文件,其内容如下: Hello World, This is a TEST. 2. 读取文本文件 使用Python内置函数 open() 打开并读取文件中的内容,读取后保存到一个字符串变量中…

    python 2023年6月5日
    00
  • Python itertools.product方法代码实例

    Python itertools.product 方法是 Python 标准库 itertools 模块中提供的函数,可以用于计算多个序列的笛卡尔积。本篇攻略将从以下几个方面详细讲解 itertools.product 方法的使用: itertools.product 的语法和参数 itertools.product 方法计算多个序列的笛卡尔积的方法 使用 …

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