Python数据结构与算法(几种排序)小结

下面是关于“Python数据结构与算法(几种排序)小结”的完整攻略。

1. 排序算法简介

排序算法是一种将一组数据按照一定规则排列的算法。在计算机科学中,常见的算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序等。

2. Python实现常见排序算法

2.1 冒泡排序

冒泡排序是一种通过交换相邻元素来排序的算法。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

在这个代码中,我们定义了 bubble_sort() 函数来实现冒泡排序。我们使用两个嵌套的循环来遍历数组,并通过比较邻元素来交换它们的位置。最后返回排序后的数组。

下面是一个使用冒泡排序的示例:

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

在这个示例,我们使用 bubble_sort() 函数对数组进行排序,并打印排序后的结果。

2.2 选择排序

选择排序是一种通过选择最小元素来排序的算法。在Python中,我们可以使用以下代码实现选择排序:

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

在这个代码中,我们定义了 selection_sort() 函数来实现选择排序。我们使用两个嵌套的循环来遍历数组,并通过比较元素来选择最小元素的位置。最后,我们返回排序后的数组。

下面是一个使用选择排序的示例:

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

在这个示例中,我们使用 selection_sort() 函数对数组进行排序,并打印排序后的结果。

2.3 插入排序

插入排序是一种通过插入元素排序的算法。在Python中,我们可以使用以下代码实现插入排序:

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

在这个代码中,我们定义了 insertion_sort() 函数来实现插入排序。我们使用一个循环来遍历数组,并将每个元素插入到已排序的子数组中。最后,我们返回排序后的数组。

下面是一个插入排序的示例:

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

在这个示例中,我们使用 insertion_sort() 函数对数组进行排序,并打印排序后的结果。

2.4 快速排序

快速排序是一种通过分治法来排序的算法。Python中,我们可以使用以下代码实现快速排序:

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)

在这个代码中,我们定义了 quick_sort() 函数来实现快速排序。我们先选择一个基准元素,然后将数组分成三个部分:小于基准元素的部分、等于基准元素的部分和大于基准元素的部分。最后,我们递归地对小大于基准素的部分进行,并将它们与等于基准元素的部分合并起来。

下面是一个使用快速排序的示例:

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

在这个示例中,我们使用 quick_sort() 函数对数组进行排序,并打印排序后的结果。

2.5 归并排序

并排序是一通过分治法来排序的算法。在Python中,我们可以使用以下代码实现归并排序:

def merge_sort(arr):
    if len(arr) > 1:
        mid = len(arr)//2
        left = arr[:mid]
        right = arr[mid:]
        merge_sort(left)
        merge_sort(right)
        i = j = k = 0
        while i < len(left) and j < len(right):
            if left[i] < right[j]:
                arr[k] = left[i]
                i += 1
            else:
                arr[k] = right[j]
                j += 1
            k += 1
        while i < len(left):
            arr[k] = left[i]
            i += 1
            k += 1
        while j < len(right):
            arr[k] = right[j]
            j += 1
            k += 1
    return arr

在这个代码中,我们定义了 merge_sort() 函数来实现归并排序。我们首先将数组分成两个部分,然后递归地对它们进行排序最后,我们将它们合并起来。

下面是一个使用归并排序的示例:

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

在这个示例中,我们使用 merge_sort() 函数对数组进行排序,并打印排序后的结果。

3. 总结

排序算法是一种一组数据按照一定规则进行排列的算法。在Python中,常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序等。在实现这些算法时,我们需要使用相应的代码来遍历数组、比较元素、交换位置等。最后,我们可以返回排序后的数组。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python数据结构与算法(几种排序)小结 - Python技术站

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

相关文章

  • 将字节数组解码为 un​​icode 时检测空字符串? (Python)

    【问题标题】:Detecting empty string when decoding byte array into unicode? (Python)将字节数组解码为 un​​icode 时检测空字符串? (Python) 【发布时间】:2023-04-07 23:55:01 【问题描述】: 我正在尝试逐字符读取字节数组并将其解码为 un​​icode …

    Python开发 2023年4月8日
    00
  • Python实现JSON反序列化类对象的示例

    下面就为您详细讲解“Python实现JSON反序列化类对象的示例”的完整攻略。 什么是JSON序列化与反序列化 JSON是一种轻量级的数据交换格式,被广泛用于前端和后端进行数据传递。在使用JSON进行数据传递时,需要进行序列化和反序列化操作。其中,序列化是将Python对象转换为JSON字符串的过程,而反序列化则是将JSON字符串转换为Python对象的过程…

    python 2023年6月3日
    00
  • Python3操作YAML文件格式方法解析

    在Python中,可以使用PyYAML模块来操作YAML文件格式。以下是详细的攻略,介绍如何使用PyYAML模块操作YAML文件格式: 读取YAML文件 可以使用PyYAML模块读取YAML文件。以下是一个示例,演示如何使用PyYAML模块读取YAML文件: import yaml with open(‘example.yaml’, ‘r’) as f: d…

    python 2023年5月14日
    00
  • 如何编写python的daemon程序

    下面是如何编写Python的daemon程序的完整攻略。 什么是Daemon程序? Daemon程序是在后台运行的程序,通常不接受控制台输入和输出,由系统自动启动和停止。这种程序通常是服务器程序,例如Web服务器、数据库服务器等,需要长时间运行,并能够自动恢复。 编写Python的Daemon程序 编写Python的Daemon程序,需要遵循以下步骤: 步骤…

    python 2023年5月30日
    00
  • 详解在Python中使用OpenCV进行直线检测

    详解在Python中使用OpenCV进行直线检测 OpenCV是一个强大的计算机视觉库,它在图像处理、视频处理、目标识别等方面有很高的应用价值。在本文中,我将详细介绍如何使用Python和OpenCV进行直线检测。 安装OpenCV 在Python中使用OpenCV需要先安装OpenCV库。如果你还没有安装,可以通过以下命令在命令行中进行安装: pip in…

    python 2023年5月14日
    00
  • python 计算两个列表的相关系数的实现

    要计算两个列表的相关系数,需要用到Python的NumPy库,以下是计算相关系数的步骤: 1. 导入NumPy库 首先需要在代码中导入NumPy库,用于进行数学运算和数组操作。 import numpy as np 2. 准备数据 接下来需要准备要进行计算的两个列表,例如: list1 = [1, 2, 3, 4, 5] list2 = [2, 4, 6, …

    python 2023年6月3日
    00
  • python中的协程深入理解

    Python中的协程深入理解 协程是一种轻量级的线程,可以在单个线程中实现并发。在Python中,协程是通过生成器实现的。在本教程中,我们将深入理解Python中的协程,并提供两个示例,演示如何使用协程实现异步编程。 协程的基本概念 协程是一种特殊的函数,它可以在执行过程中暂停,并在需要时恢复执行。协程可以看作是一种更加灵活的线程,因为它可以在单个线程中实现…

    python 2023年5月15日
    00
  • Python re.findall中正则表达式(.*?)和参数re.S使用

    当我们在Python中使用re.findall()方法对正则表达式进行匹配时,有时候需要匹配的文本可能存在换行符等特殊字符,这时我们就需要使用正则表达式中的.*?和re.S参数进行匹配。 .*?指的是非贪婪模式的任意字符,其与.*的差别在于后者是贪婪模式,会尽量匹配最长的文本,而前者则是尽量匹配最短的文本,以防止匹配过多的文本而导致的错误结果。 re.S是在…

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