快排(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
这段代码可以整合成一个函数,大家可以自行优化。代码以第一个元素为初始基准,采用递归的方法实现。值得一提的是,虽然递归是效率相对较低的方法,但是可以让代码结构清晰易懂,而且分治策略的算法大部分都用递归实现。
本文出自 “绵之学习笔记” 博客,请务必保留此出处http://chenmg.blog.51cto.com/3039876/1396061