算法原理
** 参考书:啊哈!算法
** 原理在书上已经讲的很清楚啦,我这里就不再多说:算法--快速排序(源自啊哈!算法)
代码
参考书上的原理,自己写了一个递归版本的C++实现:
// 两数交换
// 传入a和b的指针,这样可以直接改变a和b的值,否则参数就只能是局部变量,函数结束后会被清理
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
// 快速排序
// left = 0
// right = 数组长度 - 1
void quickSort(int arr[], int left, int right) {
if (left >= right) return; // 停止递归调用,这句话很关键,否则就会造成无限循环
int i = left;
int j = right;
while (j > i) {
while (j > i) {
if (arr[j] < arr[left]) break; // 以最左边的数作为基准点
else j--;
}
while (j > i) {
if (arr[i] > arr[left]) break; /