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

yizhihongxing

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爬虫实现抓取电影网站信息并入库

    Python爬虫实现抓取电影网站信息并入库 1.准备工作 安装Python 安装必要的库:BeautifulSoup, requests, pymysql 2.获取目标网站数据 使用requests库,向目标网址发送get请求,获取网站源代码,然后使用BeautifulSoup库解析出需要的信息。 示例代码: import requests from bs4…

    python 2023年5月14日
    00
  • Python使用指定字符长度切分数据示例

    接下来我将为你详细讲解 Python 使用指定字符长度切分数据的完整攻略。 什么是字符串切分? 在 Python 中,字符串是一个不可变的序列,其表示一串字符。字符串切分是指将一个字符串按照指定的字符长度进行分割,从而得到一个子字符串列表的过程。 如何进行字符串切分? 在 Python 中,可以使用字符串的切片(Slice)操作进行字符串切分。切片操作是指将…

    python 2023年6月5日
    00
  • python3光学字符识别模块tesserocr与pytesseract的使用详解

    标题:Python3光学字符识别模块TesserOCR与Pytesseract的使用详解 1. 简介 在如今的信息时代中,由于大量文字信息的存在,进行OCR(Optical Character Recognition)光学字符识别成为了必备的技能之一。本文将介绍Python3中两种OCR工具:TesserOCR和Pytesseract,让读者更好地理解它们的…

    python 2023年5月18日
    00
  • 微信跳一跳游戏python脚本

    以下是微信跳一跳游戏Python脚本的完整攻略,包含了脚本的实现方式、使用方法以及示例说明。 1. 脚本的实现方式 微信跳一跳游戏Python脚本的实现方式是通过ADB(Android Debug Bridge)工具来模拟手机屏幕触摸事件。ADB是Android SDK中的一个工具,它可以通过USB连接将Android设备与计算机连接起来,并提供一系列命令来…

    python 2023年5月14日
    00
  • python DataFrame转dict字典过程详解

    当需要将 pandas 模块中的 DataFrame 类型数据转换成 Python 的字典类型数据时,我们可以使用 DataFrame 类的 to_dict() 方法。其主要参数为 orient 和 columns。 orient 参数指定了转换后字典的形式,有以下几种取值: ‘dict’:默认值。将每行数据转换成一个字典,返回值为字典类型,每个字典的 ke…

    python 2023年5月13日
    00
  • python实现发送form-data数据的方法详解

    Python实现发送form-data数据是一种常见的自动化测试方法,可以帮助我们更好地测试接口的正确性和稳定性。本文将介绍如何使用Python实现发送form-data数据,并提供两个示例。 1. 使用requests库发送form-data数据 我们可以使用requests库发送form-data数据。以下是一个示例,演示如何使用requests库发送f…

    python 2023年5月15日
    00
  • Python信息抽取之乱码解决办法

    在Python信息抽取过程中,有时会遇到乱码的问题,这会影响我们对信息的正确抽取和处理。本攻略将介绍如何解决Python信息抽取中的乱码问题。 1. 乱码问题的原因 乱码问题通常是由于编码不一致导致的。在Python信息抽取过程中,我们通常会遇到以下几种编码: 网页编码:网页的编码通常可以在HTTP响应头中找到,例如Content-Type: text/ht…

    python 2023年5月15日
    00
  • Python的集合类型之set和frozenset详解

    Python的集合类型之set和frozenset详解 什么是集合? 集合(set)是Python中的一种数据类型,用于存储一组互不相同的元素。集合中的元素必须是不可变的(immutable),例如数字,字符串和元组,不能包含可变数据类型(mutable),例如列表、字典和集合本身。 在Python 2.3之前,集合类型是不存在的,只能用列表或字典来模拟集合…

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