Python排序算法实例代码

yizhihongxing

下面就给您详细讲解“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实现雪花算法过程详解

    雪花算法(Snowflake)是一种分布式ID生成算法,它可以生成全局唯一的ID。在本文中,我们将介绍如何使用Python实现雪花算法。 雪花算法原理 雪花算法生成的ID由64位组成,其中第1位是符号位,固定为0,后面的41位是时间戳,精确到毫秒级别,可以使用69年,接下来的10位是机器ID,可以部署1024台机器,最后的12位是序列号,可以在同一毫秒内生成…

    python 2023年5月13日
    00
  • 如何利用python和DOS获取wifi密码

    如何利用python和DOS获取wifi密码 如果你忘记了自己的Wi-Fi密码或是想要查看其他人的Wi-Fi密码,你可以使用一些工具和技巧来获取它们。在这里,我们介绍一种利用Python和DOS的方法来获取Wi-Fi密码的攻略。 步骤一:准备工作 在进行下一步操作之前,你需要进行如下准备工作: 确保你的计算机已经连接到Wi-Fi网络。 下载Python:ht…

    python 2023年6月3日
    00
  • python批量赋值操作实例

    下面我来详细讲解”python批量赋值操作实例”的完整流程。首先,我们需要了解什么是批量赋值操作。 批量赋值操作指的是一次性为多个变量赋值,可以简洁高效地写出代码。在Python中,我们可以通过元组、列表、字典等多种方式实现批量赋值操作。 元组方式实现批量赋值 a, b = 1, 2 print(a) # 输出1 print(b) # 输出2 以上代码中,采…

    python 2023年6月6日
    00
  • Python函数中的全局变量详解

    Python函数中的全局变量详解 在Python函数中,全局变量是在函数外部定义的变量。它们可以用于整个程序,包括函数内和函数外都可以使用。但是,在函数内对全局变量进行修改会导致一些问题,本文将详细讲解。 全局变量的定义 在Python中,如果你想定义全局变量,你需要在最上层的代码中定义它。定义全局变量时,你无需像局部变量那样指定数据类型。 示例代码: # …

    python 2023年6月5日
    00
  • Python selenium如何打包静态网页并下载

    使用Python及其库selenium可以方便地自动化执行web页面操作,并且可以将web页面中的数据和内容下载到本地进行处理。下面介绍如何使用Python和selenium将web页面静态化并下载。 1. 安装Python与selenium库 首先需要确保安装了Python及其库selenium。可以使用以下命令进行安装: pip install sele…

    python 2023年6月3日
    00
  • 详解Python3中ceil()函数用法

    当您需要对一个数字进行向上取整运算时,Python中提供了ceil()函数来实现。本文将详细讲解ceil()函数的用法及相关示例。 标准用法 ceil()函数的标准用法如下: import math # 对一个数字进行向上取整运算 math.ceil(x) 其中,x表示需要进行向上取整的数字。这个数字可以是整数、浮点数等。 需要注意的是,使用此函数必须先要导…

    python 2023年6月3日
    00
  • python 字典的概念叙述和使用方法

    Python 字典是一种无序、可变、键值对(Key-Value)存储的数据类型。它类似于一个现实生活中的字典,每个键都对应一个唯一的值。Python 字典的键必须是不可变的,如整数、浮点数、字符串、元组。而字典的值可以是任意数据类型。在本篇攻略中,我们将详细讲解 Python 字典的概念和使用方法。 字典的创建 字典的创建可以使用“{}”或“dict()”两…

    python 2023年5月13日
    00
  • 基于python 将列表作为参数传入函数时的测试与理解

    在Python中,可以将列表作为参数传入函数中进行处理。本文将详细讲解基于Python将列表作为参数传入函数时的测试与理解。 列表作为参数传入函数 在Python中,可以将列表作为参数入函数中进行处理。下面是一个示例: # 示例1:将列表作为参数传入函数 def sum_list(lst): sum =0 for i in lst: sum += i ret…

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