Python实现快速排序算法及去重的快速排序的简单示例

Python实现快速排序算法及去重的快速排序的简单示例

快速排序是一种常用的排序算法,它的时间复杂度为O(nlogn),效率较高。在本文中,我们将介绍如何使用Python实现快速排序算法及去重的快速排序。我们分为以下几个步骤:

  1. 快速排序算法的实现
  2. 去重的快速排序算法的实现
  3. 示例说明

步骤1:快速排序算法的实现

快速排序算法的实现过程如下:

  1. 选择一个基准元素,通常选择第一个元素或最后一个元素。
  2. 将所有小于基准元素的元素移到基准元素的左边,将所有大于基准元素的元素移到基准元素的右边。
  3. 对基准元素的左边和右边分别进行递归排序。

我们可以使用以下代码实现快速排序算法:

def quick_sort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[0]
    left = []
    right = []
    for i in range(1, len(arr)):
        if arr[i] < pivot:
            left.append(arr[i])
        else:
            right.append(arr[i])
    return quick_sort(left) + [pivot] + quick_sort(right)

在这个示例中,我们首先定义了一个名为quick_sort的函数,它接受一个参数arr,表示待排序的数组。如果数组长度小于等于1,则直接返回数组。否则,我们选择第一个元素作为准元素pivot,然后将所有小于pivot的元素移到left数组中,将所有大于pivot的元素移到right数组中。最后,我们递归对left和right数组进行排序,并将它们与pivot合并起来。

步骤2:去重的快速排序算法的实现

去重的快速排序算法的实现过程与快速排序算法类似,是在处理相等元素时需要特殊处理。我们可以使用以下代码实现去重的快速排序算法:

def quick_sort_unique(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[0]
    left = []
    right = []
    for i in range(1, len(arr)):
        if arr[i] < pivot:
            left.append(arr[i])
        elif arr[i] > pivot:
            right.append(arr[i])
        else:
            pivot_count = arr.count(pivot)
            if pivot_count == 1:
                left.append(arr[i])
            else:
                pivot_count -= 1
    return quick_sort_unique(left) + [pivot] * pivot_count + quick_sort_unique(right)

在这个示例中,我们首先定义了一个名为quick_sort_unique的函数,它接受一个参数arr,表示待排序的数组。如果数组长度小于等于1,则直接数组。否则,我们选择第一个元素作为基准元素pivot,然后将所有小于pivot的元素移到left数组中,将所有大于pivot的元素移到right数组中。如果元素等于pivot,则需要特殊处理。如果pivot只出现了一次,则将该元素移到数组中。否则,我们将pivot_count减1,并将该元素留在原数组中。最后,我们递归对left和right数组进行排序,并将它们与pivot合并起来。

步骤3:示例说明

示例1:使用快速排序算法对数组进行排序

在这个示例中,我们将使用快速排序算法对一个数组进行排序。我们可以使用以下代码进行排序:

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

在这个示例中,我们首先定义了一个名为arr的数组,它包含了一些整数。然后,我们调用quick_sort函数对该进行排序,并将排序后的结果打印出来。

示例2:使用去重的快速排序算法对数组进行排序

在这个示例中,我们将使用去重的快速排序算法对一个数组进行排序。我们可以使用以下代码进行排序:

arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_arr = quick_sort_unique(arr)
print(sorted_arr)

在这个示例中,我们首先定义了一个名为arr的数组,它包含了一些整数。然后,我们调用quick_sort_unique函数对该数组进行排序,并将排序后的结果打印出来。由于去重快速排序算法会去除重复元素,因此排序后的结果中不会包含重复元素。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现快速排序算法及去重的快速排序的简单示例 - Python技术站

(1)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • Python装饰器原理与用法分析

    Python装饰器原理与用法分析 装饰器概述 Python中,装饰器是一种语法糖,用于动态地修改函数或类的行为。换句话说,装饰器是一种将函数或类作为参数,并且返回修改后的函数或类的函数。 装饰器的主要方式是使用@符号及其后面的函数名或类名,将目标函数或类传递给装饰器函数,如下所示: @decorator_func def func(): pass 该示例中,…

    python 2023年6月7日
    00
  • python实现简易图书管理系统

    下面是“python实现简易图书管理系统”的完整攻略: 1. 确定需求 在开发任何应用程序之前,首先需要明确需求。在这种情况下,我们需要了解编写的图书管理系统需要具备哪些功能。 基本上,图书管理系统需要能够执行以下任务: 添加图书 删除图书 更新图书信息 搜索图书信息 显示图书信息列表 在这个示例中,我们将编写一个简单的控制台应用程序来执行所有这些任务。 2…

    python 2023年5月30日
    00
  • 使用pyinstaller逆向.pyc文件

    使用 PyInstaller 逆向 .pyc 文件需要以下步骤: 安装 PyInstaller 使用 Pip 命令安装 PyInstaller: pip install pyinstaller 生成 .spec 文件 在终端或命令行中执行以下命令生成 .spec 文件: pyinstaller –name=app_name file.pyc 其中,–na…

    python 2023年6月3日
    00
  • 详解PyQt5中textBrowser显示print语句输出的简单方法

    在PyQt5中,我们可以使用textBrowser来显示print语句输出的内容,具体步骤如下: 步骤一:导入PyQt5模块 首先我们需要导入PyQt5模块: import sys from PyQt5.QtGui import QTextCursor from PyQt5.QtWidgets import QApplication, QMainWindow…

    python 2023年6月5日
    00
  • 详解Python中List、Tuple、Set和Dictionary的区别和应用

    下面是关于Python中List、Tuple、Set和Dictionary的详细讲解: List List(列表)是Python中的一种基本数据类型,它可以存储任意类型的数据,也可以随时添加、删除或更改其中的元素。List的定义使用方括号[],其中的元素使用逗号分隔。示例代码如下: # 声明一个列表 mylist = [1, 2, 3, "hell…

    python-answer 2023年3月25日
    00
  • Python中实现switch功能实例解析

    下面是关于“Python中实现switch功能实例解析”的完整攻略。 概述 在Python中,没有类似于C++或Java中的switch-case语句来实现多个分支的条件判断。但是,我们可以使用字典(dict)和函数来实现类似于switch-case的功能。下面就让我们一步步来看如何实现。 方法1:使用字典实现 使用字典实现switch-case语句的思路是…

    python 2023年5月19日
    00
  • Python之读取TXT文件的方法小结

    “Python之读取TXT文件的方法小结”是一篇介绍如何在Python中读取TXT文件的文章,下面我们会详细讲解这篇文章的内容。 需要掌握的知识点 在开始介绍如何读取TXT文件之前,我们需要掌握一些基本的知识点。 文件路径 在Python中,我们需要指定要读取的文件的路径。常见的文件路径有两种: 绝对路径:从电脑根目录开始的完整路径。 相对路径:从当前文件所…

    python 2023年6月5日
    00
  • 如何用python爬取微博热搜数据并保存

    在本攻略中,我们将介绍如何使用Python爬取微博热搜数据并保存。以下是一个完整攻略,包括两个示例。 步骤1:分析网页 首先,我们需要分析微博热搜页面的HTML结构。我们可以使用Chrome浏览器的开发者工具来查看页面的HTML结构。 在Chrome浏览器中,我们可以按F12键打开开发者工具。然后,我们可以选择“Elements”选项卡,查看页面的HTML结…

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