C语言-快速排序

C语言-快速排序,第1张

思路:从一个数组中随机选出一个数N,通过一趟排序将数组分割成三个部分,1、小于N的区域 2、等于N的区域 3、大于N的区域,然后再按照此方法对小于区的和大于区分别递归进行,从而达到整个数据变成有序数组。

---------------------------------------------------------------------------------------------------------------------------------

#include

void QS(int arr[], int l, int r)//函数部分
{
    if (l >= r)
    {
        return;
    }
    int left = l, right = r;
    int p = arr[left];
    while (left < right)
    {
        while (left < right && arr[right] >= p)
        {
            right--;
        }
        if (left < right)
        {
            arr[left] = arr[right];
        }
        while (left < right && arr[left] <= p)
        {
            left++;
        }
        if (left < right)
        {
            arr[right] = arr[left];
        }
        if (left >= right)
        {
            arr[left] = p;
        }
        QS(arr, l, right - 1);
        QS(arr, right + 1, r);
    }
}


int main()
{
    int arr[5] = { 59,1,26,99,5 };
//用例
    int i;
    QS(arr, 0, 4);
    for (i = 0; i < 5; i++)
    {
        printf("%d ", arr[i]);
    }
    return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/674054.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)

保存