Quicksort in C++

/*
The PARTITION procedure is the key to the QUICKSORT algorithm, it rearranges
the subarray A[p...r] in place. PARTITION always selects an element A[r] as a
pivot element around which to partition the subarray A[p...r].
As the procedure runs, the array is partitioned into four (possibly empty)
regions: the values in A[p...i] are all less than or equal to the pivot, the
values in A[(i+1)...(j-1)] are all greater than the pivot, the values in
A[j...(r-1)] can take on any values, and the pivot A[r].
*/
int partition(int A[], int p, int r) {
    int pivot = A[r];
    int i = p - 1;
   
    for (int j = p; j < r; ++j) {
        if (A[j] <= pivot) {
            ++i;
            exchange(&A[i], &A[j]);
        }
    }
       
    exchange(&A[i + 1], &A[r]);
   
    return i + 1;
}

/*
Quicksort, like merge sort, is based on the divide-and-conquer paradigm.
Here is the three-step divide-and-conquer process for sorting a typical
subarray A[p...r]:
Divide: Partition (rearrange) the array A[p...r] into two (possibly empty)
subarrays A[p...(q-1)] and A[(q+1)...r] such that each element of A[p...(q-1)]
is less than or equal to A[q], which is, in turn, less than or equal to each
element of A[(q+1)...r]. Compute the index q as part of this partitioning
procedure.
Conquer: Sort the two subarrays A[p...(q-1)] and A[(q+1)...r] by recursive
calls to quicksort.
Combine: Since the subarrays are sorted in place, no work is needed to combine
them, the entire array A[p...r] is now sorted.
*/
void quicksort(int A[], int p, int r) {
    if (p >= r) return;
   
    int q = partition(A, p, r);
    quicksort(A, p, q - 1);
    quicksort(A, q + 1, r);
}
基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip 个人大四的毕业设计、课程设计、作业、经导师指导并认可通过的高分设计项目,评审平均分达96.5分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 [资源说明] 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设或者课设、作业,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96.5分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),供学习参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值