【力扣 中等 C】912. 排序数组
目录
题目
解法一:快速排序
题目
解法一:快速排序
void swap(int* a, int* b)
{int tmp = *a;*a = *b;*b = tmp;
}void partition(int* nums, int left, int right, int* leftMax, int* rightMin)
{int randomNum = nums[left + rand() % (right - left + 1)];int l = left, r = right, i = left;while (i <= r){if (nums[i] < randomNum)swap(&nums[l++], &nums[i++]);else if (nums[i] > randomNum)swap(&nums[r--], &nums[i]);elsei++;}*leftMax = l;*rightMin = r;
}void quickSort(int* nums, int left, int right)
{if (left >= right)return;int leftMax, rightMin;partition(nums, left, right, &leftMax, &rightMin);quickSort(nums, left, leftMax - 1);quickSort(nums, rightMin + 1, right);}int* sort(int* nums, int len)
{srand(time(NULL));quickSort(nums, 0, len - 1);return nums;
}int* sortArray(int* nums, int numsSize, int* returnSize)
{*returnSize = numsSize;return sort(nums, numsSize);
}