python数据结构的排序算法

yizhihongxing

Python数据结构的排序算法

排序是计算机科学中最基本的问题之一,它可以用于在程序中存储和管理数据。Python中有多种排序算法,包冒泡排序、选择排序、插入排序、归并排序、快速排序等。本文将详细介绍这些排序算法的用法和示。

冒泡排序

冒泡排序是一种简单的排序算法,它通过比较相邻的元素并交换它们来排序。冒排序的时间复杂度为$O(n^2)$。以下一个使用冒泡排序对列表进行排序的示例:

# 使用冒泡排序对列表进行排序
def bubble_sort(lst):
    n = len(lst)
    for i in range(n):
        for j in range(0, n-i-1):
            if lst] > lst[j+1]:
                lst[j], lst[j+1] = lst[j+1], lst[j]

lst = [3, 1, 4, 1, 5, 9, , 6, 5,3, 5]
bubble_sort(lst)
print(lst)

输出结果为:

[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

在这个例中,我们使用冒泡排序算法对lst进行排序。我们使用两个嵌套的循环来比较相邻的元素并交换它们,直到整个列表都被。

选择排序

选择排序是一种简单的排序算法,它通过选择最小的元素并将其放在正确的位置来排序。选择排序的时间复杂度为$O(n^2)$。以下是一个使用选择排序对列表进行排序的示例:

# 使用选择排序对列表进行排序
def selection_sort(lst):
    n = len(lst)
    for i in range(n):
        min_idx = i
        for j in range(i+1, n):
            if lst[j] < lst[min_idx]:
                min_idx = j
        lst[i], lst[min_idx] = lst[min_idx], lst[i]

lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
selection_sort(lst)
print(lst)

输出结果为:

[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

在这个例中,我们使用选择排序算法对列表lst进行排序。我们使用两个嵌套的循环来选择最小的元素并将其放在正确的位置,直到整个列表都被排序。

插入排序

插入排序是一种简单的排序,它通过将元素插入到已排序的部分中来排序。插入排序的时间复杂度为$O(n^2)$。以下是一个使用插入排序对列表进行排序的示例:

# 使用插入排序对列表进行排序
def insertion_sort(lst):
    n = len(lst)
    for i in range(1, n):
        key = lst[i]
        j = i - 1
        while j >=0 and key < lst[j]:
            lst[j+1] = lst[j]
            j -= 1
        lst[j+1] = key

lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
insertion_sort(lst)
print(lst)

输出结果为:

[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

在这个例中,我们使用插入排序算法对列表lst进行排序。我们使用一个循环来将元素插入到已排序的部分中,直到整个列表都被排序。

归并排序

归并排序是一种分治算法,它将列表分成两个子列表,对每个子列表进行排序,然后将它们合并成一个有序的列表。归并排序的时间复杂度为$O(n\log n)$以下是一个使用归并排序对列表进行排序的示例:

# 使用归并排序对列表进行排序
def merge_sort(lst):
    if len(lst) > 1:
        mid = len(lst) // 2
        left_lst = lst[:mid]
        right_lst = lst[mid:]
        merge_sort(left_lst)
        merge_sort(right_lst)
        i = j = k = 0
        while i < len(left_lst) and j < len(right_lst):
            if left_lst[i] < right_lst[j]:
                lst[k] = left_lst[i]
                i += 1
            else:
                lst[k] = right_lst[j]
                j += 1
            k += 1
        while i < len(left_lst):
            lst[k] = left_lst[i]
            i += 1
            k += 1
        while j < len(right_lst):
            lst[k] = right_lst[j]
            j += 1
            k += 1

lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
merge_sort(lst)
print(lst)

输出结果为:

[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

在这个例中,我们使用归并排序算法对列表lst进行排序。我们使用递归将列表分成两个子列表,对每个子列表进行排序,然后将它们合并成一个有序的列表。

快速排序

快速排序是一种分治算法,它通过选择一个基准元素,将列表分成两个子列表,对每个子列表进行排序,然后将它们合并成一个有序的列表。快速排序的时间复杂度为$O(n\log n。以下是一个使用快速排序对列表进行排序的示例:

# 使用快速排序对列表进行排序
def quick_sort(lst):
    if len(lst) <= 1:
        return lst
    pivot = lst[0]
    left_lst = [x for x in lst[1:] if x < pivot]
    right_lst = [x for x in lst[1:] if x >= pivot]
    return quick_sort(left_lst) + [pivot] + quick_sort(right_lst)

lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
lst = quick_sort(lst)
print(lst)

输出结果为:

[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

在这个例中,我们使用快速排序算法对列表lst进行排序。我们选择一个基准元素,将列表分成两个子列表,对每个子列表进行排序,然后将它们合并成一个有的列表。

总结

Python中有多种排序算法,包括冒泡排序、选择排序、插入排序、归并排序、快速排序等。每种排序算法都有其自己的优缺点和适景。本文介绍了这些排序算法的用法和示例,希望能够帮助您更好地理解Python中的排序算法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python数据结构的排序算法 - Python技术站

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

相关文章

  • Python基于回溯法子集树模板解决最佳作业调度问题示例

    Python基于回溯法子集树模板解决最佳作业调度问题示例 前言 本文将讲解利用回溯法子集树模板来解决最佳作业调度问题的详细攻略。 回溯法是一种常见的算法思想,可以用于解决多个问题,其中之一就是最佳作业调度问题。最佳作业调度问题是指在多个作业执行时间固定的情况下,如何安排这些作业的执行顺序,能够使得作业总执行时间最短。本文中将基于回溯法子集树模板来解决最佳作业…

    python 2023年5月31日
    00
  • Python matplotlib画图与中文设置操作实例分析

    下面我将为你详细讲解 “Python matplotlib画图与中文设置操作实例分析”的完整攻略。 环境准备 首先,需要安装以下一些依赖库: matplotlib, pandas, numpy 在 Python 3 中安装这些库可以通过 pip 命令来安装,例如: pip install matplotlib pandas numpy 中文字符设置 使用 m…

    python 2023年5月18日
    00
  • Python安装Bs4的多种方法

    安装Bs4的多种方法,我这里介绍3种常用的方法。 方法一:使用pip安装 打开终端或者命令行窗口(Windows用户可以使用cmd或PowerShell)。 输入以下命令并按回车: pip install beautifulsoup4 等待Bs4安装完毕即可。 方法二:使用easy_install安装 安装easy_install。easy_install是…

    python 2023年5月14日
    00
  • python实现FTP文件传输的方法(服务器端和客户端)

    Python可以通过ftplib模块和socket模块实现FTP文件传输的方法。FTPlib模块可以通过FTP协议实现文件上传、下载等操作,socket模块可以实现FTP协议的底层通信。下面分别介绍客户端和服务器端的实现方法。 客户端 客户端的实现步骤如下: 创建FTP对象; 连接FTP服务器; 进行登录认证; 进行文件上传或下载; 关闭FTP连接。 示例1…

    python 2023年6月3日
    00
  • 《Python算法交易实战》——yfinace获取yahoo财经数据

    因为从2021 年11 月1 日起,用户无法从中国大陆地区使用Yahoo 产品与服务所以下面两个错误,都是代理配置的问题error:No timezone found, symbol may be delisted error:No data found for this date range, symbol may be delisted 以下是解决办法:…

    python 2023年4月17日
    00
  • 详解Python PIL ImageOps.solarize()方法

    Python PIL库提供了ImageOps模块,该模块提供了许多有用的图像操作函数,包括ImageOps.solarize()方法。该方法提供了一种将图像中像素值小于threshold的像素反转颜色的功能,也就是说将图像中像素的颜色由[0, threshold)映射到(threshold, 255]区间,从而使图像产生“solarize(日晒)”效果。 方…

    python-answer 2023年3月25日
    00
  • python三大器之迭代器、生成器、装饰器

    Python 三大器指的是迭代器(iterator)、生成器(generator)和装饰器(decorator),它们是 Python 语言中非常重要的概念。在下面的内容中,我将详细讲解这三大器的概念、用法和示例。 迭代器(Iterator) 迭代器是 Python 中一种用于访问集合元素的对象,它可以记住遍历的位置,并且知道下一个要遍历的元素。迭代器对象从…

    python 2023年5月14日
    00
  • Python 遍历循环详细

    Python遍历循环详细攻略 在Python中,遍历循环是一种常用的循环方式。它允许我们逐个访问序列中的每个元素,并对其进行处理。本文将带你了解Python中常用的遍历循环方式,包括for循环和while循环。 for循环 for循环是Python中最常用的循环方式,它可以遍历任何序列类型,如列表、元组、字符串、字典等。 遍历列表 下面是一个遍历列表的示例代…

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