排序数组(快排)

912.排序数组(快排)

题目描述

给你一个整数数组 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;
}

总结

以上就是今天要讲的内容,本文简单介绍了题目的解题思路,在力扣以及牛客网中还会有很多类似的题目,今后将会持续更新,敬请关注!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值