Python实现的几个常用排序算法实例

Python实现的几个常用排序算法实例

排序算法是计算机科学中的基本算法之一,它的主要目的是将一组数据按照一定的顺序排列。在Python中,可以使用简单代码实现几个常用的排序算法。本文将详细讲解Python实现的几个常用排序算法的过程,并提供两示例说明。

冒泡排序

冒泡排序是一种简单的排序算法,它的基本思想是通过相邻元素的比较和交换来实现排序。具体过程如下:

  1. 从第一个元素开始,依次比较相邻的两个元素,如果前一个元素大于后一个元素,则交换它们的位置。
  2. 对于每一对相邻的元素,重复步骤1,直到最后一对元素。
  3. 重复步骤1和步骤2,直到所有元素都排序完成。

在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

其中,arr表示待排序的数组。执行上述代码后,可以得到排序后的数组。

示例1

假设需要对一个整数进行排序。可以使用上述代码实现冒泡排序。具体代码如下:

arr = [64, 34, 25, 12, 22, 11, 90]
sorted_arr = bubble_sort(arr)
print("排序后的数组:", sorted_arr)

输出结果如下:

排序后的数组 [11, 12, 22, 25, 34, 64, 90]

示例2

假设需要对一个字符串数组进行排序。可以使用上述代码实现冒泡排序。具体代码如下:

arr = ["apple", "banana", "orange",pear", "grape"]
sorted_arr = bubble_sort)
print("排序后的数组:", sorted_arr)

输出结果如下:

排序后的数组: ['apple', 'banana', 'grape', 'orange', 'pear']

快速排序

速排序是一种高效的排序算法,的基本思想是通过分治的思想一个大问题分解成若干个小问题,后递归地解决这些小问题。具体过程如下:

  1. 选择一个基准元素,将数组分成两个子数组,小于基准元素的放在左边,大于基准元素放在边。
  2. 对于左右两个子数组,重复步骤1,直到所有子数组的长度为1或0在Python中,使用单的代码实现快速排序。具体实如下:
def quick_sort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[0]
    left = [x for x in arr[1:] if x < pivot]
    right = [x for x in arr[1 if x >= pivot]
    return quick_sort(left) + [pivot] + quick_sort(right)

其中,arr表示待排序的数组。执行上述代码后,可以得到排序后的数组。

示例1

设对一个整数数组进行排序。可以使用上述代码实现快速排序。具体代码如下:

arr = [64, 34, 25, 12, 22, 11, 90]
sorted_arr = quick_sort(arr)
print("排序的数组:", sorted_arr)

输出结果如下:

排序后的数组: [11, 12, 22, 25, 34, 64, 90]

示例2

假设需要对一个字符串数组进行排序。可以使用上述代码实现快速排序。具体代码如下:

arr = ["apple", "banana", "orange", "pear", "grape"]
sorted_arr = quick_sort(arr)
print("排序后的数组:", sorted_arr)

输出结果如下:

排序后的数组: ['apple', 'banana', 'grape', 'orange', 'pear']

归并排序

归并排序是一种稳定的排序算法,它的基本想是将一个大问题分解成若干个小问题,然后递归地解决这些小问题,最后将结果合并起来。具体过程如下:

  1. 将数组分成个子数组,对每个子数组递归地进行排序。
  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

其中,arr表示待排序的数组。执行上述代码后,可以得到排序后的数组。

示例1

假设需要对一个整数数组排序。可以使用上述代码实归并排序。具体代码如下:

arr = [64, 34, 25, 12, 22, 11, 90]
sorted_arr = merge_sort(arr)
print("排序后的数组:", sorted_arr)

输出结果如下:

排序后的数组: [11, 12, 22, 25, 34, 64, 90]

示例2

假设需要对一个字符串数组进行排序。可以使用上述代码实现归并排序。具体代码如下:

arr = ["apple", "banana", "orange", "pear", "ape"]
sorted_arr = merge_sort(arr)
print("排序后的数组:", sorted_arr)

输出结果如下:

排序后的数组: ['apple', 'banana', 'grape', 'orange', 'pear']

总结

冒泡排序、快速排序和归并排序是常用的排序算,它们的实过程都比较简单。在Python中,可以使用简单的代码实现些排序算法,通过示例说明,可以好地理解这些算法的实现过程。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现的几个常用排序算法实例 - Python技术站

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

相关文章

  • Python自动化办公之生成PDF报告详解

    Python自动化办公之生成PDF报告详解 简介 本攻略将详细介绍如何使用Python语言自动化生成PDF报告。我们将使用Python中的reportlab库,Pillow库,以及Pandas库,通过数据处理和图表可视化来生成具有分析性质的PDF报告。 准备工作 在使用reportlab库来生成PDF文件之前,需要进行以下准备工作: 1.安装reportla…

    python 2023年6月5日
    00
  • python添加菜单图文讲解

    下面详细讲解”Python添加菜单”的攻略。 1. 创建菜单 首先需要导入 tkinter 库,然后调用 Tk() 函数来创建一个窗口。在窗口上添加一个菜单,可以使用 Menu() 函数。该函数需要指定一个 Tk 对象作为参数,并且还可以指定菜单的样式以及添加菜单项。 示例1:添加一个简单的菜单栏 import tkinter as tk root = tk…

    python 2023年6月13日
    00
  • Python之freegames 零代码的22个小游戏集合

    Python之freegames 零代码的22个小游戏集合攻略 1. 介绍 Python之freegames是一个由Python语言实现的,由22个小游戏组成的集合。这些游戏非常容易上手,因为它们都是使用Python标准库和freegames模块编写的。更重要的是,它们没有任何代码,因此无需担心程序语法错误或逻辑错误。 这些游戏的难度各不相同,既有简单的,也…

    python 2023年6月3日
    00
  • Python使用selenium实现网页用户名 密码 验证码自动登录功能

    下面是详细的攻略,包含两个示例说明。 Python使用selenium实现网页自动登录 在这个教程中,我们将学习如何使用Selenium库来编写Python代码,以实现自动化登录网页功能。 前置条件 首先你需要安装Python和Selenium,可以使用以下命令来安装: pip install selenium 其次,你需要下载ChromeDriver并添加…

    python 2023年5月19日
    00
  • 如何从转储文件重建对象 – Python 3

    【问题标题】:How to reconstruct objects from a dump file – Python 3如何从转储文件重建对象 – Python 3 【发布时间】:2023-04-03 00:08:02 【问题描述】: 我使用 tkinter 在 python 3 中创建了一个绘图应用程序。作为应用程序的一部分,我将保存包含形状(椭圆、线条…

    Python开发 2023年4月8日
    00
  • Python中的MongoDB基本操作:连接、查询实例

    Python中的MongoDB基本操作:连接、查询实例 连接MongoDB 在Python中使用MongoDB需要先安装PyMongo库。安装方法如下: pip install pymongo 安装完毕后,使用以下代码连接MongoDB: import pymongo # 连接MongoDB client = pymongo.MongoClient(host…

    python 2023年5月14日
    00
  • Python中Decimal对象的除法和乘法

    【问题标题】:Dividing and multiplying Decimal objects in PythonPython中Decimal对象的除法和乘法 【发布时间】:2023-04-07 03:41:01 【问题描述】: 在下面的代码中,coeff1 和 coeff2 都是 Decimal 对象。当我使用类型(coeff1)检查它们的类型时,我得到(…

    Python开发 2023年4月8日
    00
  • Python中pyautogui库的使用方法汇总

    Python中pyautogui库的使用方法汇总 pyautogui是Python中一个非常实用的自动化工具库,能够模拟鼠标和键盘操作,实现自动化的任务流程。本篇文章将对pyautogui库的使用方法进行详细讲解,包含以下内容: 安装pyautogui库 基本操作:鼠标移动、点击、拖拽、键盘输入等 屏幕控制:屏幕截图、获取像素RGB值、查找图像位置等 使用案…

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