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

yizhihongxing

下面是关于“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 函数(WINDOWS)从 docx 转换为 pdf?

    【问题标题】:How to convert from docx to pdf with a python function (WINDOWS)?如何使用 python 函数(WINDOWS)从 docx 转换为 pdf? 【发布时间】:2023-04-02 12:55:02 【问题描述】: 我正在开发一个带有 python 函数的环境来将 docx 转换为 …

    Python开发 2023年4月8日
    00
  • Python代码注释规范代码实例解析

    Python代码注释规范是编写高质量Python代码的重要组成部分。以下是Python代码注释规范的一些实例解析: 1. 单行注释 单行注释用于在一行代码后面添加注释,以解释代码的作用或提供其他相关信息。单行注释以#符号开头,直到行末结束。 以下是一个示例,演示如何使用单行注释: # This is a single line comment print(‘…

    python 2023年5月15日
    00
  • 详解Python中matplotlib模块的绘图方式

    下面是详解Python中matplotlib模块的绘图方式的完整攻略。 一、Matplotlib概述 Matplotlib是Python的一个开源绘图库,提供了丰富的绘图工具,可用于绘制各种静态、动态、交互式的图表、图形和可视化。Matplotlib的设计目标是简单易用,同时支持多种输出格式,如图片、PDF、SVG等,并且可兼容NumPy数组和Pandas数…

    python 2023年5月19日
    00
  • 几个适合python初学者的简单小程序,看完受益匪浅!(推荐)

    几个适合Python初学者的简单小程序 Python是一种易学易用的编程语言,适合初学者入门学习编程。以下介绍几个适合Python初学者的简单小程序,这些小程序简单易懂,编写过程中可以让初学者更好的了解Python编程的基本操作和语法。 简单的计算器 这是一个可以实现基本的运算的计算器,代码如下: num1 = float(input("请输入第一…

    python 2023年5月19日
    00
  • 400多行Python代码实现了一个FTP服务器

    下面介绍一下实现FTP服务器的完整攻略。 1. 确定需求 在实现FTP服务器之前,我们需要先明确需求,例如需要实现的功能、支持的协议等。一般来说,FTP服务器需要支持用户登录、文件上传和下载、目录操作等基本功能,同时使用TCP协议进行传输。 2. 编写代码 2.1 创建服务器 首先,我们需要创建一个FTP服务器实例,用于接收客户端的请求并进行处理。 impo…

    python 2023年5月20日
    00
  • python3制作捧腹网段子页爬虫

    下面是关于“python3制作捧腹网段子页爬虫”的完整攻略: 一、准备工作 1. 安装Python3 首先需要安装Python3,可以到官网下载安装包。 2. 安装第三方库requests和BeautifulSoup4 在Python中我们可以通过第三方库来实现网页爬虫,这里我们使用requests和BeautifulSoup4两个库,需要先安装: pip …

    python 2023年5月14日
    00
  • Python timeit模块的使用实践

    Python timeit模块的使用实践 什么是timeit模块 Python的timeit模块是一个用来测试Python代码执行时间的小工具。它可以精确地测量代码的执行时间,避免其他因素(如CPU、I/O等)的影响。 timeit模块的基础用法 计时单行语句 在Python解释器中,可以使用timeit模块来测试单行语句的执行时间: import time…

    python 2023年6月3日
    00
  • 自己用python做的一款超炫酷音乐播放器

    下面是自己做的一款超炫酷音乐播放器的完整攻略。 准备工作 在制作音乐播放器之前,我们需要安装Python的tkinter和pygame模块。 安装方法: pip install tkinter pip install pygame 创建主界面 音乐播放器的主界面通过tkinter的Frame类来实现。在创建主界面时,我们需要导入tkinter模块,定义窗口的…

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