Python3 notes

简介: Python3 notes

Python 快速排序

快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为较小和较大的2个子序列,然后递归地排序两个子序列。

步骤为:

  • 挑选基准值:从数列中挑出一个元素,称为"基准"(pivot);
  • 分割:重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面(与基准值相等的数可以到任何一边)。在这个分割结束之后,对基准值的排序就已经完成;
  • 递归排序子序列:递归地将小于基准值元素的子序列和大于基准值元素的子序列排序。

递归到最底部的判断条件是数列的大小是零或一,此时该数列显然已经有序。

选取基准值有数种具体方法,此选取方法对排序的时间性能有决定性影响。

实例

defpartition(arr,low,high):      i = (low-1)         # 最小元素索引    pivot = arr[high]             forjinrange(low , high):             # 当前元素小于或等于 pivot        if   arr[j] <= pivot:                         i = i+1              arr[i],arr[j] = arr[j],arr[i]         arr[i+1],arr[high] = arr[high],arr[i+1]      return(i+1)      # arr[] --> 排序数组# low  --> 起始索引# high  --> 结束索引  # 快速排序函数defquickSort(arr,low,high):      iflow < high:             pi = partition(arr,low,high)             quickSort(arr, low, pi-1)          quickSort(arr, pi+1, high)    arr = [10, 7, 8, 9, 1, 5]n = len(arr)quickSort(arr,0,n-1)print("排序后的数组:")foriinrange(n):      print("%d" %arr[i]),

执行以上代码输出结果为:

排序后的数组:

1

5

7

8

9

10

相关文章
|
8月前
|
移动开发 Python
Python3 notes
Python3 notes
|
3月前
|
数据挖掘
uniapp uview扩展u-picker支持日历期间 年期间 月期间 时分期间组件
uniapp uview扩展u-picker支持日历期间 年期间 月期间 时分期间组件
168 10
Web server failed to start. Port XXX was already in use.【完美解决方案】
Web server failed to start. Port XXX was already in use.【完美解决方案】
Web server failed to start. Port XXX was already in use.【完美解决方案】
|
4月前
|
Prometheus Kubernetes 监控
使用kubectl快速查看各个节点的CPU和内存占用量
在Kubernetes集群中,安装metrics-server,并使用kubectl快速查看集群中各个节点的资源使用情况。
326 0
|
5月前
|
程序员
聊聊 CTO 和 技术总监的区别
聊聊 CTO 和 技术总监的区别
274 0
|
7月前
|
JavaScript
error Component name “Login“ should always be multi-word vue/multi-word-component-names【已解决】
error Component name “Login“ should always be multi-word vue/multi-word-component-names【已解决】
443 1
|
8月前
|
SQL 消息中间件 Java
Flink部署问题之带上savepoint部署任务报错如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
算法 5G 调度
带你读《5G大规模天线增强技术》——1.4 大规模天线增强技术的主要方向
带你读《5G大规模天线增强技术》——1.4 大规模天线增强技术的主要方向
带你读《5G大规模天线增强技术》——1.4 大规模天线增强技术的主要方向
|
8月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
【Python机器学习】神经网络中全连接层与线性回归的讲解及实战(Tensorflow、MindSpore平台 附源码)
【Python机器学习】神经网络中全连接层与线性回归的讲解及实战(Tensorflow、MindSpore平台 附源码)
197 0
|
设计模式 消息中间件 Java
SpringBoot事件监听机制及观察者/发布订阅模式详解
在GoF的《设计模式》中,观察者模式的定义:在对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有依赖的对象都会自动收到通知。如果你觉得比较抽象,接下来这个例子应该会让你有所感觉: