直接上代码
void QuickSort(int start , int end1 , int* arr)
{
if(start>=end1)//当开始于结束相等时结束调用,否则会栈溢出
return;
int i = start;//设置两个哨兵,i寻找比temp大的值,j寻找比temp小的值
int j = end1;
int temp = arr[start];
while (j >i)
{
while (arr[j] >= temp && j > i)j--;//这里的两个while顺序不能换
while (arr[i] <= temp && j > i)i++;
if (j > i)//满足条件就交换
{
int z;
z = arr[i];
arr[i] = arr[j];
arr[j] = z;
}
}
arr[start] = arr[i];
arr[i] = temp;
QuickSort(start, i - 1, arr);//递归完成所有部分
QuickSort(i + 1, end1, arr);
}



