QuickSort
快速排序 - 递归分治为两个子数组,独立进行排序,主要在于切分元素的选择,左边子数组元素小于切分元素,右边子数组元素大于切分元素。
快速排序的思想
对于双边循环法,以两个指针和切分元素将数组进行递归切分,左边子数组元素小于切分元素,右边子数组元素大于切分元素,递归切分至最小元素时,自然实现排序(最小时包括一个左边元素,一个切分元素,一个右边元素,它们是有序的)。
对于单边循环法,只使用一个指针和切分元素将数组进行递归切分,并且使用一个标记指针记录切分边界的位置,当元素小于切分元素,移动标记元素并且与比较元素交换位置。
代码示例
单边循环法
Java
实现
1 | import java.util.Arrays; |
Python
实现
1 | def sort(nums, low, high): |
双边循环法
Java
实现
1 | import java.util.Arrays; |
Python
实现
1 | def sort(nums, low, high): |