首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python|快速排序

1 快速排序的方法 取一个元素s,将比s小的元素放在s的左边,将比s大的元素放在s的右边;就是将数组划分成两部分,左小右大,然后将分好的两个数组递归继续执行上述操作,直到排序完毕为止。...递归执行上述步骤;在对划分的左右进行排序,直到排序完毕。 左边:left=0,right=返回的left-1 右边:left=返回的left,right=数组长度 ?...2 代码演示 # 快速排序 def passt(li, left, right): s = li[left] # 该处 我们始终以第一个元素为s,即所取元素 while left...,及如何用python代码来实现。...快速排序相对于其他排序方法而言,主要突出了一个“快”字,可以更快的将数组的元素进行排序。 END 主 编 | 王文星 责 编 | W Z Y

32020
您找到你想要的搜索结果了吗?
是的
没有找到

快速排序python实现

快速排序python实现 快速排序 快速排序的实现同样使用分治法,它的原理是从序列中选择一个值作为基准值,然后分成比基准值小的序列集合和比基准值小的序列集合和与基准值相等的序列集合。...每次分割都是以序列中的第一个值作为基准值,经过拆分后自然就变成了有顺序的 具体算法 def quick_sort(s): """快速排序,s为列表""" # 结束条件 if len...,类似的也可以实现其他类型序列的排序 时间复杂度 快速排序的时间复杂度有最优情况与最坏情况 最优情况为每一次的基准值都正好为序列的中位数,时间复杂度为nlog(n) 最坏情况为每一次的基准值都恰好是序列的最大值或最小值...上面的快排使用了L,E,R存储临时的序列,这样会占用内存,使用就地快速排序的方式可以在原序列上完成排序,减少了内存的使用 def inplace_quick_sort(s,a,b): """列表的就地快速排序...s[b] = s[b],s[left] inplace_quick_sort(s,a,left-1) inplace_quick_sort(s,left+1,b) 上述代码是列表的就地快速排序

51220

浅尝Python快速排序

wiki 什么是快速排序? wiki百科的定义是:快速排序,又称划分交换排序,简称快排,一种排序算法。在平均状况下,排序n个项目 次比较。在最坏状况下则需要 次比较,但这种状况并不常见。...事实上,快速排序通常明显比其他算法更快,因为它的内部循环(inner loop)可以在大部分的架构上可以很有效率地达成。...步骤 快速排序步骤 快速排序使用分治法策略来把一个序列(list)分为两个子序列(sub-lists)。...这样左右两边区间都只有一个数了,这就标志着排序完成,最后把所有区间合并就得到排序结果: 69 96 520 666 1314 Code 上代码!...pivot: _less.append(_item) else: _greater.append(_item) # 这里用到了python

31340

Python算法——快速排序

快速排序通常比冒泡排序和选择排序更高效,特别适用于大型数据集。本文将详细介绍快速排序的工作原理和Python实现。...快速排序的工作原理 快速排序的基本思想是: 选择一个基准元素(通常是数组中的某个元素)。 将数组分成两个子数组,一个包含小于基准的元素,另一个包含大于基准的元素。 递归地对两个子数组进行排序。...Python实现快速排序 下面是Python中的快速排序实现: def quick_sort(arr): if len(arr) <= 1: return arr pivot...示例代码 下面是一个使用Python进行快速排序的示例代码: def quick_sort(arr): if len(arr) <= 1: return arr pivot...总之,快速排序是一种高效的排序算法,通过选择基准元素和分割数组,递归地对子数组进行排序,实现了对数组的快速排序。了解快速排序有助于理解排序算法的高效性,并为大型数据集的排序提供了一个强大的工具。

23310

Python实现快速排序

一、快速排序简介 快速排序(Quick Sort)是一种效率很高的排序算法,是对冒泡排序的一种改进排序算法。...,第一轮快速排序完成。...快速排序的名字起得简单直接,因为这种排序算法速度快,效率高,是处理大数据最快的排序算法之一。 二、快速排序原理 快速排序的原理如下: 1. 从待排序列表中选取一个基准数据(通常选取第一个数据)。...三、Python实现快速排序 # coding=utf-8 def quick_sort(array, start, end): if start >= end: return...快速排序除了需要传入待排序列表以外,还需要传入排序的开始索引和结束索引,也就是说快速排序可以指定排序列表中的部分数据,在递归的时候就是排序部分数据。

80841

Python——关于排序算法(快速排序法)

今天,我们更新最后一个排序算法——快速排序法。 快速排序法(quick sort) 先来看一下百度百科的定义: 快速排序(Quicksort)是对冒泡排序的一种改进。 快速排序由C. A. R....它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列...百度百科 合并排序法如果理解了,那么这节的快速排序法也就不难理解了,可能还是比合并排序法稍微难那么一点点,所以是放在最后来讲。...有列表a = [4,5,3,8,2,9,7,1,6] 用快速排序法操作: 取首个元素4作为pivot, 第一轮: 看剩下的元素,依次往后找第一个比pivot大的数字,是5,同时从末尾向前找第一个比pivot...因为python有自带排序的语法,2行就能实现排序,不信,你看: num = [4,5,3,8,2,9,7,1,6] print(sorted(num)) 这2行就能直接实现排序

68630

Python排序算法:快速排序与冒泡排序

Python排序算法:快速排序与冒泡排序 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/7828610.html 入坑(简称IT)这一行也有些年头了,但自老师讲课提过排序算法后几乎再也没写过排序算法...(如果是右边所指的值就挪动指向的位置,值不动),左边也一样     D>将基准位置两边的值分别排序(一般是递归调用) 好了,以上大概就是快速排序的的一半步骤,如有不懂之处,建议顺着代码来推测快速排序的整个过程.../usr/bin/env Python 2 #快速排序法 3 def quickSort(arr,_l,_r): 4 l,r,t=_l,_r,0 5 if l <= r: 6...100] 既然是Python,当然Python中对于数组也内置了一键排序算法: 1 ii=[23,1,6,77,8,-11,100,11.1,99,24,21] 2 ii.sort() #数组内置...print ("ij",ij) 既然Python已经提供了排序方法,还要白忙活一气,是不是很悲伤?

51630

Python排序算法:快速排序与冒泡排序

Python排序算法:快速排序与冒泡排序 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/7828610.html 入坑(简称IT)这一行也有些年头了,但自老师讲课提过排序算法后几乎再也没写过排序算法...) 好了,以上大概就是快速排序的的一半步骤,如有不懂之处,建议顺着代码来推测快速排序的整个过程,并不难: 1 #!.../usr/bin/env Python 2 #快速排序法 3 def quickSort(arr,_l,_r): 4 l,r,t=_l,_r,0 5 if l <= r: 6...100] 既然是Python,当然Python中对于数组也内置了一键排序算法: 1 ii=[23,1,6,77,8,-11,100,11.1,99,24,21] 2 ii.sort() #数组内置...print ("ij",ij) 既然Python已经提供了排序方法,还要白忙活一气,是不是很悲伤?

78320

Python实现的快速排序

今天看了下《算法新解》这本书,很薄的一本书,最开始吸引我的有两点,一个是里面的大量的图,内容相对来说比较清新,第二个是里面的代码是基于Python实现。...记得大学看一个算法,花了好几个小时,结果上课的时候,老师花了不到五分钟就讲完了,然后脑袋一片空白,记得当时学快速排序的时候,感觉这个算法应该是很复杂,感觉理解了,但是很快就忘记了。...对于快速排序,算法的思考方式就是由简到难。...quicksort(less) + [pivot] + quicksort(greater) print quicksort([5,11,3,5,8,2,6,7]) 生成的日志如下: D:\programs\python2.7...\python.exe C:/python/kmp/db_ops/quicksort.py ('pivot:', 5) ('less:', [3, 5, 2]) ('greater', [11, 8,

92970

Python3快速排序

Python3快速排序 概述 快速排序(Quicksort)是对冒泡排序的一种改进。 快速排序由C. A. R. Hoare在1962年提出。...通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。...基本过程 设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。...值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。...一趟快速排序的算法是: 设置两个变量i、j,排序开始的时候:i=0,j=N-1 以第一个数组元素作为关键数据,赋值给key,即key=A[0] 从j开始向前搜索,即由后开始向前搜索(j--),找到第一个小于

1.2K60

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券