快速排序通常用于排序的最佳的使用选择,其期望运行时间为:O(nlgn),能够进行就地排序。最坏运行时间为:O(n^2)
算法描述:
分解(divide):数组A[beg…end]被划分为两个子数组A[beg…mid - 1]和A[mid + 1…end],使得A[beg…mid - 1]中的数据都小于A[mid],A[mid + 1…end]中的数据都大于A[mid]
解决(conquer):递归地调用QuickSort
合并(combine):因为QuickSort是就地排序的,所以不需要合并操作
Quick-Sort的C++实现如下: