手撕快排

  • 实在理解不了的话,背吧*
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);
	}
	
}