快速排序-

本文详细介绍了快速排序算法的工作原理,通过挖坑与填补的方式阐述了如何将数组元素进行有效排序。核心思想是选取中心值,将小于中心值的元素放在其左边,大于中心值的放在右边,逐步缩小排序范围。提供的C++代码展示了快速排序的实现过程,并进行了多趟排序的结果展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

快速排序

思路:
忙着左右挖坑,先把选定的中心值挖走,出现个🕳,找右边小点的值补上,右边出现个🕳,就去左边找个大点的值补上,一直挖一直补,挖不动的时候把中心值填上。
核心:
(1)比中心值小的往前放,比中心值大的往后放
(2)坑是从两头向中间逼近

void quicksort(int a[],int left,int right){
    if(left >= right)
        return;
    int center  = a[left];
    int i = left + 1,j = right;
    while(true){
        //j向左走,找第一个比中心值小的
        while(a[j] > center)
            j--;
        //i向右走,找第一个比中心值大的
        while(a[i] < center && i < right)
            i++;
        //右边小的和左边的大的替换一下下
        if(i < j)
            swap(a[i++],a[j--]);
        //挖不动了,找到center具体的位置
        else{
            swap(a[left],a[j]);
            break;
        }
    }
    cout << "第X趟排序结果 : " << endl;
    for(int i = 0;i < n;i++)
        cout << a[i] << " ";
    cout << endl;
    quicksort(a,left,j - 1);
    quicksort(a,j + 1,right);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Αиcíеиτеǎг

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值