9行代码实现快速排序
Python3实现快速排序 写在前面 快排思想(分治思想) 递归拆解 代码实现 性能分析(缺点) 写在前面 在网上看了很多五花八门的快速排序,当然这些排序的时间和空间复杂度都不一样,难以衡量其好还是坏。但是大多都比较难理解。我这里根据快排的思想,用最简洁的、最容易理解的代码实现了快排。 快排思想(分治思想) 从要排序的arr里随机找一个基准值p,根据基准值p把arr分解到两个arr里,分别是arr1、arr2。分解时要保证arr1里的所有数据小于arr2(不需要保证这两个arr里的数据有序); 从arr1里随机找出一个元素当做基准值p,根据p的值把arr1分解成arr11/arr12,分解时要保证arr11里的数据小于arr12里的所有数据(不需要保证两个arr里的数据有序); 同理,从arr2里随机找出一个元素当做基准值p,根据p的值把arr2分解成arr21/arr22 … 就这样不断递归分解下去,最后每个子arr里只有一个元素,再把这些元素合并,最后就得到一个有序的数组。 递归拆解 对于快排来说,其思想并不难理解。对于代码实现来说,最难的就是递归部分,下面通过一个实例来帮助理解递归的过程。 假设我需要排序的数组如下 arr = [ 95 , 20 , 10 , 15 , 8 , 24 , 57 , 60 , 15 , 88 , 92 ] 这里为了简单理解