代码如下,行行说明代码设计,需要具备快排思想
#include <iostream>
using namespace std;
void quickSort(int *arr,int begin,int end){
if(begin>=end)return;
//当最后只剩一个数时结束排序,说明排序完成
int l=begin;//左指针 ,为什么需要定义一个l不用begin直接进行,是为了记录递归的左指针,结尾有说明
int r=end;//右指针 ,同理,结尾有说明
int p=arr[l];//基准,默认设置为第一个
while(l<r){//当两个指针没有相等且超出时
while(l<r && arr[r]>=p)r--;
//当左指针小于右指针(注意:不是数组元素),且当前右指针的元素是大于等于p时
//这时不用交换元素只用让r--,直到找到右边元素小于p位置
if(l<r)arr[l]=arr[r];//当右边元素小于p时,这时需要把右边的元素赋值为左指针指向的元素
while(l<r && arr[l]<=p)l++;
//当左指针小于右指针,且 当前的左指