手撕快排
- 实在理解不了的话,背吧*
void quick_sort(int arr[], int l, int r)
{
if (l < r)
{
int i = l;
int j = r;
int x = arr[i];
while (i < j)
{
while (i < j&&arr[j] > x) //先从右往左找第一个小于x的数
{
j--;
}
if (i < j)
{
arr[i++] = arr[j]; //换位,指针右移一位
}
while (i < j&&arr[i] < x)//从左往右找第一个小于x的数
{
i++;
}
if (i < j)
{
arr[j--] = arr[i];//换位,指针左移一位
}
}
arr[i] = x;
quick_sort(arr, l, i - 1);
quick_sort(arr, i + 1, r);
}
}