Python排序算法实例代码

下面就给您详细讲解“Python排序算法实例代码”的完整攻略:

一、排序算法简介

排序算法(sorting algorithm)是计算机程序中最基础的算法之一,它是指将一组无序的数据元素,按照某种规则进行排列的过程。

常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序等,它们的实现方式不同,但总体思路都是通过比较和交换元素位置来完成排序的。

在Python中,也有很多内置的排序函数,比如sort()、sorted()等。但是,理解和掌握基本的排序算法,对于编写高效的程序和解决实际问题非常有帮助。

二、Python排序算法实例代码

下面,我们将分别展示冒泡排序、选择排序和插入排序的Python实现代码。

1. 冒泡排序

冒泡排序(Bubble Sort)是最基础的排序算法之一,它的基本思想是通过相邻元素的比较和交换,使得每一趟排序都能确定一个当前未排序部分的最大值。

冒泡排序的时间复杂度为O(n^2),不适用于大规模数据。

以下是Python实现的冒泡排序代码:

def bubble_sort(arr):
    n = len(arr)
    for i in range(n - 1):
        for j in range(n - i - 1):
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]
    return arr

代码中,外层循环遍历未排序部分,内层循环遍历相邻的元素,并进行比较和交换。

2. 选择排序

选择排序(Selection Sort)也是一种简单的排序算法,它的基本思想是通过不断选择未排序部分的最小值,并将其放到已排序部分的最后面,最终实现整个序列的排序。

选择排序的时间复杂度为O(n^2),不适用于大规模数据。

以下是Python实现的选择排序代码:

def selection_sort(arr):
    n = len(arr)
    for i in range(n - 1):
        min_index = i
        for j in range(i + 1, n):
            if arr[j] < arr[min_index]:
                min_index = j
        if min_index != i:
            arr[i], arr[min_index] = arr[min_index], arr[i]
    return arr

代码中,外层循环遍历未排序部分,内层循环遍历未排序部分的元素,并记录最小值的索引,最后将最小值与未排序部分的第一个元素进行交换。

3. 插入排序

插入排序(Insertion Sort)也是一种简单的排序算法,它的基本思想是通过逐步构建有序序列,不断将未排序部分的元素插入到已排序部分的合适位置,从而实现整个序列的排序。

插入排序的时间复杂度为O(n^2),适用于小规模数据。

以下是Python实现的插入排序代码:

def insertion_sort(arr):
    n = len(arr)
    for i in range(1, n):
        temp = arr[i]
        j = i - 1
        while j >= 0 and temp < arr[j]:
            arr[j + 1] = arr[j]
            j -= 1
        arr[j + 1] = temp
    return arr

代码中,外层循环遍历未排序部分,内层循环遍历已排序的元素,并将当前元素插入到合适的位置。

三、示例说明

下面,我们举两个例子来说明如何应用以上排序算法。

1. 按照成绩进行排序

假设我们有一个由学生姓名和成绩组成的列表,现在要按照成绩从高到低进行排序。代码如下:

students = [('Tom', 85), ('Bob', 92), ('Mary', 78), ('Jerry', 99)]

# 按照成绩从高到低排序
scores = [s[1] for s in students]
sorted_scores = bubble_sort(scores)[::-1]
sorted_students = [(students[scores.index(score)][0], score) for score in sorted_scores]
print(sorted_students)

代码中,我们先将学生成绩提取出来,然后进行排序,最后再根据排序结果重新构造学生列表。

输出结果为:

[('Jerry', 99), ('Bob', 92), ('Tom', 85), ('Mary', 78)]

2. 丢失的数字

给定一个由0~n之间的n个不同的整数组成的列表,其中有一个数字丢失了,现在要找到它。代码如下:

nums = [3, 1, 0, 5, 2, 7, 6, 4]

# 找到丢失的数字
sorted_nums = selection_sort(nums)
for i in range(len(sorted_nums)):
    if sorted_nums[i] != i:
        print(i)
        break

代码中,我们先对列表进行从小到大的排序,然后依次检查每个数字,找到第一个与下标不一致的数字即为缺失的数字。

输出结果为:

说明:由于这个列表中丢失了数字8,因此最终输出结果为空。

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

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

相关文章

  • Python实现平行坐标图的两种方法小结

    Python实现平行坐标图的两种方法小结 简介 平行坐标图(Parallel Coordinates)是数据可视化的一种常用方法,它可以有效地展示高维数据的特征和关系。本文将介绍Python中实现平行坐标图的两种方法,并且提供两个示例说明这两种方法的使用。 方法一:使用plotly库 安装plotly库 要使用plotly库,首先需要安装它。可以使用pip进…

    python 2023年5月18日
    00
  • 利用python修改json文件的value方法

    当我们需要修改一个JSON文件的数据时,可以使用Python提供的json模块来读取JSON文件到Python中,使用Python中的数据处理操作来修改需要修改的数据,最后再将修改后的数据写回到JSON文件中。 下面是修改JSON文件value的具体步骤: 导入json模块,使用open()函数读取JSON文件到Python中: “`python impo…

    python 2023年6月3日
    00
  • python中join与os.path.join()函数实例详解

    首先我们来讲一下Python中的join函数和os.path.join()函数,它们的区别以及常用场景。 join函数 join函数是Python中内置的一个字符串方法,可以将一个可迭代对象中的元素以指定的字符串连接起来,返回连接后的字符串。具体语法如下: str.join(iterable) 其中,str是指定的连接符,iterable是要连接的可迭代对象…

    python 2023年5月14日
    00
  • python TKinter弹出式菜单的实例方法

    下面是关于“Python TKinter弹出式菜单的实例方法”的详细攻略: 什么是弹出式菜单 弹出式菜单是一种常见的界面元素,它通常在用户右击或按下特定的键时出现,提供了一些与当前上下文相关的选项,帮助用户完成一些特定的操作。 在 Python 的 TKinter 库中,可以使用 Menu 对象来创建弹出式菜单。 创建弹出式菜单 要创建弹出式菜单,可以调用 …

    python 2023年6月13日
    00
  • Python模拟登录requests.Session应用详解

    以下是关于Python模拟登录requests.Session应用详解: Python模拟登录requests.Session应用详解 在Python中,requests是一个流行的HTTP库,可以用于向Web发送HTTP请求和接响应。在模拟登录时,我们可以使用requests.Session来保持会话状态。以下是Python模拟登录requests.Ses…

    python 2023年5月14日
    00
  • python必学知识之文件操作(建议收藏)

    Python必学知识之文件操作 前言 文件操作是Python编程中必不可少的一项技能。通过文件操作,我们可以读取、写入文件,创建、删除文件夹等等。在实际开发中,我们通常需要处理各种形式的文件,例如文本文件、Excel文件、图片等等。因此,掌握Python文件操作的基础知识是非常重要的。 本文将详细讲解Python中文件操作的相关知识点,希望能给大家提供一些帮…

    python 2023年5月20日
    00
  • opencv+mediapipe实现人脸检测及摄像头实时示例

    OpenCV+MediaPipe实现人脸检测及摄像头实时示例 本文将介绍使用OpenCV和MediaPipe库实现人脸检测的步骤,并提供两个示例: 人脸检测及关键点标注 摄像头实时人脸检测及关键点标注 安装所需库 首先,需要安装好OpenCV和MediaPipe库。 对于Python用户,可以使用pip命令来安装 pip install opencv-pyt…

    python 2023年5月18日
    00
  • Python中遇到的小问题及解决方法汇总

    Python中遇到的小问题及解决方法汇总 在Python编程过程中,我们可能会遇到各种小问题,例如安装库时出现错误、语法错误、缩进错误等。以下是Python中到的小问题及解决方法的完整攻略: 1. 安装库时出现错误 在Python编程过程中,我们可能会到安装库时出现错误的情况。这些错误可能是由于缺少依赖项、网络问题或其他因引起的。以下是一些常见的错误及其解决…

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