117.info
人生若只如初见

python实现快速排序的示例(二分法思想)

下面是一个使用递归方法实现快速排序的示例代码:

def quick_sort(arr):
if len(arr) <= 1:
return arr
else:
pivot = arr[0]
less = [x for x in arr[1:] if x <= pivot]
greater = [x for x in arr[1:] if x > pivot]
return quick_sort(less) + [pivot] + quick_sort(greater)
# 示例用法
arr = [5, 2, 9, 1, 8, 6, 3, 7, 4]
sorted_arr = quick_sort(arr)
print(sorted_arr)

输出结果为:[1, 2, 3, 4, 5, 6, 7, 8, 9]

在快速排序中,通过选择一个元素作为基准(pivot),将数组分为两个子数组,一个子数组中的元素小于等于基准,另一个子数组中的元素大于基准。然后对这两个子数组进行递归排序,最终得到排序后的数组。

在示例代码中,选择第一个元素作为基准,然后使用列表解析将小于等于基准的元素放入less列表,将大于基准的元素放入greater列表。最后递归对lessgreater进行快速排序,并将结果与基准元素合并返回。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe398AzsLBgFWBVE.html

推荐文章

  • python正则-re的用法详解

    Python中的re模块是用来进行正则表达式操作的工具包。re模块提供了很多函数和方法,用于对字符串进行匹配、查找、替换等操作。 re.match(pattern, string, flags...

  • Python爬虫代理池搭建的方法步骤

    搭建Python爬虫代理池的方法步骤如下: 安装所需的依赖库:首先,确保你已经安装了Python和pip。然后使用pip安装所需的库,如requests、beautifulsoup、flask等。...

  • 教你从零开始实现贪吃蛇Python小游戏

    首先,我们需要导入pygame库来实现游戏的图形化界面:
    import pygame 然后,定义一些常量来表示游戏窗口的宽度和高度、蛇身的大小、食物的大小等:
    WI...

  • python_tkinter弹出对话框创建

    要创建一个弹出对话框,我们可以使用tkinter.messagebox模块中的showinfo()、showwarning()、showerror()等函数。下面是一个示例代码,演示了如何创建一个简单的...

  • linux中使用grep命令详解

    grep命令是Linux系统中一个非常常用的文本搜索工具,它用于在文件或者输入流中查找指定的字符串模式,并将匹配到的行打印出来。
    grep命令的基本语法如下:<...

  • Android常用定时器的实现方式

    Android常用的定时器实现方式有以下几种: Handler定时器:使用Handler类的postDelayed()方法,可以延迟指定的时间执行一段代码。可以通过循环调用postDelayed()...

  • Apache log4j2-RCE 漏洞复现及修复建议(CVE-2021-44228)

    Apache log4j2 是一个用于 Java 应用程序的流行日志记录组件。最近,一个严重的远程代码执行(RCE)漏洞在 Apache log4j2 中被发现(CVE-2021-44228),该漏洞允...

  • Java三种移位运算符原理解析

    Java中有三种移位运算符:左移运算符()和无符号右移运算符(>>>)。 左移运算符():将一个数的所有位向右移动指定的位数,高位补符号位。移动后,低位的位数...