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下10个简单实例代码

    以下是关于“Python下10个简单实例代码”的完整攻略: 简介 Python是一种易于学习和使用的编程语言,它具有广泛的应用领域。在本教程中,我们将介绍10个简单的Python实例代码,这些代码涵盖了Python的基础知识和常见的编程问题。 Python实例代码 以下是10个简单的Python实例代码: 1. 计算两个数的和 a = 5 b = 3 sum…

    python 2023年5月14日
    00
  • Python操作Excel的学习笔记

    下面我来详细讲解一下“Python操作Excel的学习笔记”的完整实例教程。 Python操作Excel的学习笔记 介绍 本教程将介绍如何使用Python来操作Excel文件。我们将使用xlrd、xlwt和openpyxl这三个库来读取、写入和编辑Excel文件。 安装 在开始操作Excel之前,我们需要安装xlrd、xlwt和openpyxl这三个库。在安…

    python 2023年5月13日
    00
  • matplotlib.pyplot画图 图片的二进制流的获取方法

    通过使用matplotlib模块的子模块pyplot可以方便地进行数据可视化和绘图。在这个过程中,有时需要将图片作为二进制流的形式获取,以便于后续使用,本篇文章将详细讲解如何获取图片的二进制流。 1. 获取画图对象 在使用pyplot绘图时,我们需要先创建一个画图对象,比如下面的代码: import matplotlib.pyplot as plt plt.…

    python 2023年5月18日
    00
  • Python xlwings插入Excel图片的实现方法

    下面给出详细的Pythonxlwings插入Excel图片的实现方法的完整实例教程。本实例教程的具体实现方法为: 教程概述 本教程主要演示如何使用Python的xlwings库来在Excel表格中插入图片。包含以下内容: 安装Pythonxlwings 导入Pythonxlwings库 读取Excel表格 插入图片到Excel表格中 保存Excel表格 步骤…

    python 2023年5月13日
    00
  • 详解Python Matplotlib解决绘图X轴值不按数组排序问题

    下面是详解Python Matplotlib解决绘图X轴值不按数组排序问题的完整攻略。 问题描述 在使用Python库Matplotlib进行绘图时,有时候在X轴上显示的数据值不会按照原始数组中的顺序排列,从而导致绘图结果不符合预期。 解决方案 获取原始数组中的索引 解决此问题的一种方案是,先获取原始数组中每个值的索引,然后按照索引的大小顺序重新排列数组。这…

    python 2023年5月18日
    00
  • 使用Python脚本生成随机IP的简单方法

    下面是使用Python脚本生成随机IP的完整攻略: 1. 安装 Python 如果你还没有安装 Python,请先前往 Python官方网站 下载安装 Python 版本(推荐 Python3)。 2. 安装random和ipaddress模块 在使用 Python 生成随机 IP 地址之前,需要安装两个模块——random和ipaddress。安装方法如下…

    python 2023年6月3日
    00
  • 用Python手把手教你实现2048小游戏

    用Python手把手教你实现2048小游戏 简介 2048是一款基础益智小游戏,游戏规则简单,但是要想得高分需要一定的技巧。本文将使用Python语言来实现这个小游戏,并且在代码过程中注释详细,以便初学者更好地理解代码逻辑。 实现思路 初始化游戏 随机生成2或4,并在随机生成的位置上显示出来 玩家通过方向键来控制数字块的移动 当数字块无法移动时,本次游戏结束…

    python 2023年5月19日
    00
  • 使用Python将数组的元素导出到变量中(unpacking)

    下面就是使用Python将数组的元素导出到变量中的完整攻略: 1. 使用解构赋值(unpacking)将数组的元素导出到变量中 Python中的解构赋值能够将一个序列(如列表、元组、字符串)中的元素直接解包(unpack)到一些变量中,如下所示: # 定义一个列表 fruits = [‘apple’, ‘banana’, ‘orange’] # 用解构赋值将…

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