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基于tkinter canvas实现图片裁剪功能

    Python基于tkinter canvas实现图片裁剪功能的攻略如下: 1. 准备工作 在使用canvas进行图片裁剪之前,我们需要导入必要的库,包括tkinter、PIL(Python Imaging Library,用于处理图片的库)。在命令行中输入以下代码进行安装: pip install tkinter pip install pillow 之后,…

    python 2023年6月13日
    00
  • Python求导数的方法

    下面是关于 Python 求导数的方法的完整攻略,包含以下内容: Python 求导数的库 数值求导 符号求导 示例说明 注意事项 Python 求导数的库 在 Python 中,可以使用以下库求导数: NumPy NumPy 是 Python 中常用的科学计算库,其中包含了用于数学计算的各种函数,包括求导数。 SciPy SciPy 是基于 NumPy 的…

    python 2023年6月5日
    00
  • Python自动化操作Excel方法详解(xlrd,xlwt)

    下面是关于Python自动化操作Excel方法详解(xlrd,xlwt)的完整实例教程。 一、前言 Excel表格在日常工作中起着至关重要的作用。在数据分析、报表输出等方面都是不可缺少的工具。而如果能够使用Python来实现Excel表格的自动化操作,将会进一步提高工作效率,节省大量时间。 Python自动化操作Excel可以使用两个常用库:xlrd和xlw…

    python 2023年5月13日
    00
  • Python requests模块用法详解

    Python requests模块用法详解 什么是requests模块 requests是一个第三方Python库,用于在Python中发送HTTP请求和处理响应。requests的设计非常简单、易于使用且稳定性好,因此成为Python爬虫领域中最常用的网络请求库之一。 使用requests 安装requests 使用pip安装requests库: pip …

    python 2023年5月13日
    00
  • Python实现自定义异常实例

    下面是Python实现自定义异常实例的完整攻略: 什么是自定义异常 在Python中,异常就是程序执行过程中出现的错误情况。Python内部已经定义了很多的异常类,如TypeError、ValueError、IndexError等等。但是有时候我们需要针对自己的业务需求,自定义一些异常类来提高代码的可读性和可维护性。这就是自定义异常。 如何自定义异常 在Py…

    python 2023年5月13日
    00
  • 通俗讲解python 装饰器

    当我们需要给已经存在的函数添加一些额外的功能,但是又不想修改已有函数的功能时,Python中的装饰器就是一个非常适合的工具。装饰器是一种返回函数的函数,它可以接受一个函数作为参数并返回一个新的函数来增强参数函数的功能。装饰器提供了一种方便的方式来修改函数,而不需要对原始函数的代码进行修改。 什么是装饰器 装饰器本质上是一个 Python 函数或类,可以使其他…

    python 2023年5月18日
    00
  • Win7 64位下python3.6.5安装配置图文教程

    以下是Win764位下Python3.6.5的安装配置图文教程: 1. 下载安装包 首先,你需要从官网下载Python3.6.5的安装包,链接如下: https://www.python.org/ftp/python/3.6.5/python-3.6.5-amd64.exe 下载完成后,双击安装包,选择“Add Python 3.6 to PATH”,然后一…

    python 2023年5月14日
    00
  • Python多进程的使用详情

    下面是针对“Python多进程的使用详情”的完整攻略。 1. Python多进程简介 在操作系统中,一个进程是一个执行中的程序,这个程序有可能是由一个进程或者多个进程组成的。Python提供了一个multiprocessing模块,可以很方便地实现进程间通信以及进程池等多进程操作。 2. Python多进程的使用方法 2.1 进程的创建 在Python中,可…

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