这一章的正文及思考题部分讲到了快速排序及其几种变形,包括:Hoare快排,
普通快排,随机快排,三数取中快排。
这些快排的区别主要是划分方法PARTITION算法的不同:如何选取主元,划分出的
两部分范围是什么。根据划分出的范围不同,各变形的QUICKSORT有微小的差别。
1. Hoare快排
Hoare划分是最初的版本,与《算法导论》中的划分版本相比,它选取第一个元素A[p]为主元。
划分后的两部分是:A[p..j]和A[j+1..r],主元可能放入某一个之中。
int hoare_partition(int A[], int p, int r)
{
int x = A[p];
int i = p - 1;
i