python快速排序
关于利用python进行快速排序
鄙人新人一个,目前正在学习中,不喜勿喷
当然也欢迎志同道合之人一起学习,一起进步
我们或多或少接触过排序问题,但是当数据过于庞大时,普通的排序方法(冒泡,选择,插入)在时间和占用内存的角度来说是处于一种劣势地位【极特殊情况除外】
步骤:
1.从数列中挑出一个元素,称为 "基准"(pivot),
2.重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。
3.递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。
代码:
# 对排序进行封装部分
def sub_sort(list_, low, high):x = list_[low]# 将基准赋值给变量x 以便于后续操作while low < high:while list_[high] >= x and low < high:high -= 1list_[low] = list_[high] # 将小的数往前放while list_[low] < x and low < high:low += 1list_[high] = list_[low] # 将大的数往后放list_[low] = x # 将基准插入return lowdef quick(list_, low, high):'''快排函数:对目标进行快速排序:param list_: 排序目标:param low: 目标的索引最低值【基本为0】:param high: 目标索引的最高值【len(list_)-1】:return:'''if low < high: # 递推截止条件key = sub_sort(list_, low, high)# 调用我们定义的排序函数quick(list_, low, key - 1)# 将基准左边的数据进行排序quick(list_, key + 1, high)# 将基准右边的数据进行排序# —————————测试代码————————————————— if __name__ == '__main__':list01 = [1, 4, 7, 0, 32, 5, 75, ]quick(list01, 0, len(list01) - 1)print(list01)
建议
如果看不懂代码,可以将代码复制到自己的编译器中,进行调试操作(右键单击Debug,快捷键shift+alt+f9)按f7键!欢迎点赞评论加收藏!!!
生活没有捷径,停止为懒惰找借口,你未来的样子,藏在你现在的努力中!!!加油同行者
python快速排序相关推荐
- python快速排序 -两种方法
python 快速排序 使用python实现快速排序 方法一 方法二 使用python实现快速排序 快速排序,⼜称划分交换排序 1.通过⼀趟排序将要排序的数据分割成独⽴的两部分, 其中⼀部分的所有数据 ...
- Python 快速排序算法【简单易懂,代码直接运行】
Python 快速排序算法[简单易懂,代码直接运行] 给定你一个长度为 n 的整数数列. 请你使用快速排序对这个数列按照从小到大进行排序. 并将排好序的数列按顺序输出. 输入格式 输入共两行,第一行包 ...
- python 快速排序详解
python 快速排序详解 快速排序函数 def partition(arr,low,high): i = ( low-1 ) #最小元素<索引>pivot = arr[high] #选取 ...
- python快速排序实现元素递增
python快速排序实现元素递增 概念 1.快速排序法又称分割交换法,是冒泡排序法的改进. 基本思想 2.在数据中找到一个虚拟的中间值,然后将所有计划排序的数据分成两部分.在这些数据中,小于中间值的数 ...
- Python - 快速排序
Python - 快速排序 手写一遍快速排序,加深记忆. # 准备被排序的数组 array_to_be_sorted = [int(i) for i in input().split()]def qu ...
- python 快速排序_小白入门知识详解:Python实现快速排序的方法(含实例代码)...
前言: 今天为大家带来的内容是:小白入门知识详解:Python实现快速排序的方法(含实例代码)希望通过本文的内容能够对各位有所帮助,喜欢的话记得点赞转发收藏不迷路哦!!! 提示: 这篇文章主要介绍了P ...
- python快速排序解析_快速排序python实现总结
算法 数据结构 快速排序python实现总结 背景:数据结构与算法是IT相关的工程师一直以来的基础考察重点,很多经典书籍都是用c++或者java来实现,出于对python编码效率的喜爱,于是取sear ...
- python快速排序算法循环_算法:快速排序的Python实现
一.概述 快速排序(quick sort)是一种分治排序算法.该算法首先 选取 一个划分元素(partition element,有时又称为pivot):接着重排列表将其 划分 为三个部分:left( ...
- python快速排序代码_Python实现快速排序算法
原标题:Python实现快速排序算法 Python实现快速排序算法 快速排序算法是一种基于交换的高效的排序算法,由C.R.A.Hoare于1962年提出,是一种划分交换排序.它采用了一种分治的策略,通 ...
- python 快速排序 详解_数据结构与算法:快速排序(原理讲解+python实现)
快速排序 快速排序是一种基于分治法(Divide and Conquer)的排序算法 它之所以称为快速排序是因为它的平均时间复杂度为O(nlogn),最坏情况下是O(n2) 但是这样的情况不常见 一般 ...
最新文章
- string 类型详解
- 关于How to do/What to do
- Android 数据显示控件(ListView实战演练)
- Tree HDU - 6547 (树链剖分,线段树)
- 堆元素插入 二叉堆一般用数组来表示。typedef struct _otherInfo{ int i; int j;}OtherInfo;-icoding-C-数据结构
- 在Oracle中使用JDBC插入功能
- 解决vmware报错:Mac OS X is not supported with binary translation.
- Spring中Bean作用域有哪些
- python卷积神经网络训练,python卷积神经网络图像
- 2018年10月7日虚拟机出现无法连接MKS错误提示和docx, rtf类型文件简介
- 耦合度如何降低耦合度
- hackthon java_Hackathon 参赛指南——如何愉快地参加一场 Hackathon
- java小练习:乘法表的实现(不止是9)
- js html监听ctrl v,js监听组合按键
- Java SE基础知识详解第[12]期—集合(Set、Collections、Map、集合嵌套)
- 【新知实验室TRTC】
- 学校计算机教室防火墙,学校网络及电脑教室建设方案
- 如何选择一个技术解决方案
- mysql设置初始密码(linux)
- 计网复习笔记【附思维导图】——【2】应用层