题目描述
给你一个整数数组 nums,请你将该数组升序排列
图示
样例代码
void Swap(int* a, int* b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
int PartSort(int* nums, int start, int end)
{
int keyi = start;
while (start < end)
{
while(nums[end] >= nums[keyi] && start < end)
{
end--;
}
while(nums[start] <= nums[keyi] && start < end)
{
start++;
}
Swap(&nums[end], &nums[start]);
}
Swap(&nums[keyi], &nums[start]);
return start;
}
void QuickSort(int* nums, int start, int end)
{
if (start >= end)
{
return;
}
int keyi = PartSort(nums, start, end);
QuickSort(nums, start, keyi - 1);
QuickSort(nums, keyi + 1, end);
}
int* sortArray(int* nums, int numsSize, int* returnSize)
{
QuickSort(nums, 0, numsSize - 1);
*returnSize = numsSize;
return nums;
}
总结
以上就是今天要讲的内容,本文简单介绍了题目的解题思路,在力扣以及牛客网中还会有很多类似的题目,今后将会持续更新,敬请关注!