快速排序——单向扫描分区法
思想
1、利用递归划分子问题
2、定主元,将小于主元的元素放在主元的左侧, 大于主元的元素放在主元的右侧
3、主元的左右两侧就是两个子问题,将每一个子问题重复第2步,即可使序列有序
实施方案
1、将主元定为每个序列或子序列的首元素
2、设置左指针与右指针,左指针指向主元的下一次元素,右指针指向最右边的元素
3、将左指针所指向的元素与主元比较,如果小于或等于主元,左指针向后移动,右指针不变;
如果大于主元,则将左指针所指向的元素,与右指针指向的元素交换,左指针不变,右指针向前移动一位
4、循环往复步骤3,直到左指针的位置大于右指针的位置
参考代码
/*
快速排序之——单项扫描分区法
*/
#include<stdio.h>
void quickSort(int arr[], int p, int r);
int partition(int arr[], int p, int r);
void swap(int arr[],