快排(QuickSort)是很实用的算法,好用就好用在一个“快”字,而且它采用的是分治的策略,分治顾名思义就是“分而治之”,把一个大问题分成很多小问题逐个去解决,这个思想在处理大数据时相当有效,更详细通俗的原理解析请看这里。
直接贴代码:
def partition(sort_list, left, right):
key = sort_list[left]
while left < right :
while left < right and sort_list[right] >= key :
right -= 1
if left < right and sort_list[right] < key:
sort_list[left] = sort_list[right]
left += 1
while left < right and sort_list[left] >= key:
left += 1
if left < right and sort_list[left] < key:
sort_list[right] = sort_list[left]
right -= 1
sort_list[left] = key
return left
def quickSort(sort_list, left, right):
if left < right :
i = partition(sort_list, left, right)
quickSort(sort_list, left, right-1)
quickSort(sort_list, left+1, right)
return sort_list
这段代码可以整合成一个函数,大家可以自行优化。代码以第一个元素为初始基准,采用递归的方法实现。值得一提的是,虽然递归是效率相对较低的方法,但是可以让代码结构清晰易懂,而且分治策略的算法大部分都用递归实现。