我的快排
很遗憾, 超时了. 测试用例都过了
https://leetcode-cn.com/problems/sort-an-array/
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
// 9 10 8 6 3 8 1
// 9 1 8 6 3 8 10
// 9 1 8 6 3 8 10
// 3 1 2 4 5
// [left, right)
int* quickSort(int* nums, int left, int right) {
if (right - left <= 1) {
return nums;
}
int tmp = nums[left];
int i = left; int j = right - 1;
while(i != j) {
while(nums[j] >= tmp && i != j) {
j--;
}
if (i == j) {
break;
}
nums[i++] = nums[j];
while(nums[i] < tmp && i != j) {
i++;
}
if (i == j) {
break;
}
nums[j--] = nums[i];
}
nums[i] = tmp;
if (i - left > 1)
quickSort(nums, left, i);
if (right - i - 1 > 1)
quickSort(nums, i + 1, right);
return nums;
}
int* sortArray(int* nums, int numsSize, int* returnSize){
printf("numsSize=%d", numsSize);
quickSort(nums, 0, numsSize);
*returnSize = numsSize;
return nums;
}

浙公网安备 33010602011771号