void Quicksort(int arry[], int L, int R)
{
if (L >= R)
return;
int left = L, right = R;//将L、R赋给变量使用以防修改排序数组的左右下标。
int pivot = arry[left];
//持续到left和right重叠
while (left < right)
{
while (left < right && arry[right] >= pivot)
{
right--;
}
if (left < right)
{
arry[left] = arry[right]; //left处值已经赋给pivot,可被right赋值
}
while (left < right && arry[left] <= pivot)
{
left++;
}
//left移动后分以下两种情况
if (left < right)
{
arry[right] = arry[left];
}
if (left >= right) {
arry[left] = pivot;//持续到left和right重叠,将pivot放置于此
}
}
//对pivot左右的数组快排
Quicksort(arry, L, right - 1);
Quicksort(arry, right + 1, R);
}