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日

相关文章

  • 一步步教你用python的scrapy编写一个爬虫

    下面是我为你提供的详细攻略: 一步步教你用python的Scrapy编写一个爬虫 Scrapy是Python的一个高效的爬虫框架,可以帮助我们快速、简单地构建爬虫程序。在本攻略中,我们介绍如何使用Scrapy编写一个简单的爬虫程序。 安装Scrapy 在开始编写爬虫之前,我们需要先安装Scrapy。在终端(命令行)中输入以下命令来安装Scrapy: pip …

    python 2023年5月14日
    00
  • java8 Stream大数据量List分批处理切割方式

    Java8中的Stream API为处理大量数据提供了一种有效的方式。当数据量很大时,可以将大数据量的集合拆分成多个小集合,然后使用Stream API进行批量处理。在这里,我们将讨论如何使用Java8 Stream API对大量数据进行分批处理的切割方式。 1. 切割方式 使用Java8 Stream API进行大数据集合分批处理非常简单。我们只需要按照以…

    python 2023年5月14日
    00
  • python实现顺序表的简单代码

    要实现Python的顺序表,我们可以使用列表(list)来完成。下面是实现顺序表的简单代码,包括顺序表的初始化、插入、删除、查找等基本操作。 初始化顺序表 创建一个空的列表来作为顺序表的基本数据结构。 # 初始化一个空的顺序表 def InitList(): return [] 插入元素到顺序表中 在列表的末尾,添加一个新的元素。 # 插入元素 def Li…

    python 2023年5月19日
    00
  • python从list列表中选出一个数和其对应的坐标方法

    以下是详细讲解“Python从List列表中选出一个数和其对应的坐标方法”的完整攻略。 在Python中,可以使用enumerate()函数来获取List中元素的索引和值。本文将介绍如何使用enumerate()函数来选出List中的一个数和其对应坐标,并提供两个示例。 选出一个数和其对应的坐标 可以使用enumerate()函数来获取List中元素的索和值…

    python 2023年5月13日
    00
  • python对接ihuyi实现短信验证码发送

    当您需要使用Python编写应用程序并实现短信验证码发送时,可以使用ihuyi提供的API来实现。在本攻略中,我们将介绍如何使用Python对接ihuyi实现短信验证码发送。以下是一个完整攻略,包括两个示例。 步骤1:注册ihuyi账号并获取API信息 首先,我们需要注册ihuyi账号并获取API信息。我们可以在ihuyi官网上注册账号,并在控制台中获取AP…

    python 2023年5月15日
    00
  • Python类中__init__() 和self的详细解析

    Python类中__init__() 和self的详细解析 在Python中,类是一种面向对象的编程方式,它可以让我们更好地组织和管理代码。在类中,__init__()和self是两个非常重要的概念。本文将详细讲解__init__()和self的含义和用法,并提供两个示例来说明它们的使用。 init()方法 __init__()是Python中的一个特殊方法…

    python 2023年5月14日
    00
  • python三引号输出方法

    当我们需要在 Python 中输出长篇文字时,使用三引号输出方法可以避免在每行文字的行末添加换行符,与普通字符串变量的定义方式有所不同。下面是使用三引号方式定义字符串变量的语法: variable_name = ”’ Long text here ”’ 其中 ”’ 表示三个连续的单引号,将所有文本包围在其中,可以在句首句尾包含换行符和缩进。下面进行更详…

    python 2023年5月20日
    00
  • 简单了解python字符串前面加r,u的含义

    那我就来详细讲解一下 Python 字符串前面加 r,u 的含义以及使用方法吧。首先简单介绍一下Python中字符串的定义方式: string1 = ‘hello world’ string2 = "hello world" string3 = """ hello world ""&quo…

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