C++ 排序算法

快速排序

思想:

分而治之,或者说递归,即大问题拆解成类似的小问题,把所有的小问题解决,就解决了大问题;

应用在快排(默认从小到大排序)上,就是取一基准点,遍历数组,将比基准点大的放在基准点右边,比基准点小的放在基准点左边;

然后再以同样的思路,在基准点左边序列中,重新取一基准点,重复上述流程,直到只需要比较一个元素和基准点的大小,即为有序

步骤:

1. 取基准点,一般取区间的第一个元素,然后分区,左区(比基准点小)+基准点+右区(比基准点大);

2. 分区步骤:选取基准点和前后指针后,遍历区间,先从右往左,找到第一个比基准点小的元素, 左指针=右指针的值;然后从左往右,找到第一个比基准点大的元素,右指针=左指针的值,重复直到两指针相遇,相遇点=基准点的值;

3. 分区后的左区和右区重复第一步,递归的结束标志为左右区间相等;

代码:

#include <iostream>
#include <vector>
using namespace std;


int partition(vector<int>& arr, int low, int high) {
    int pivot = arr[low];
    while (low < high) {
        while (low < high && arr[high] >= pivot) {
            high--;
        }
        arr[low] = arr[high];

        while (low < high && arr[low] <= pivot) {
            low++;
        }
        arr[high] = arr[low];

    }
    arr[low] = pivot;
    return low;
}

void quickSort(vector<int>& arr, int low, int high) {
    if (low < high) {
        int pos = partition(arr, low, high);
        quickSort(arr, low, pos-1);
        quickSort(arr, pos+1, high);
    }
}



int main() {
    vector<int> arr = {5,3,2,1,6,8,9};
    quickSort(arr, 0, arr.size()-1);
    for (const int & a : arr) {
        cout << a << endl;
    }
    return 0;
}

Aspose.Words for Java 22.12 是亚波斯.Word为Java平台的一个版本。它是一个强大的Java组件,用于处理和操作Microsoft Word文档(.doc和.docx格式)。 Aspose.Words for Java可以实现多种功能,例如创建、编辑、格式化和转换Word文档。它提供了丰富的API来访问和处理文档的内容,包括插入和删除文本、表格和图片,修改字体、样式和布局,设置页边距和页眉页脚等。它还支持将文档保存为PDF、HTML、图片等格式,或者从这些格式中加载和转换文档。 除了基本的文档操作,Aspose.Words for Java还提供了许多高级功能。例如,它可以执行邮件合并,将数据从数据库或Excel表格等源填充到Word文档模板中。它还支持数字签名、加密和密码保护等安全功能,以保护文档的机密性。此外,它还具有对复杂的文档对象模型(DOM)的支持,以及自动调整表格大小、分节和目录生成等高级布局功能。 Aspose.Words for Java具有良好的性能和稳定性,并且易于使用。它可以轻松集成到Java应用程序中,通过简单的API调用实现各种文档处理任务。无论是个人用户、企业还是开发人员,都可以使用Aspose.Words for Java来处理和管理Word文档,并满足各种工作和项目需求。 总而言之,Aspose.Words for Java 22.12是一个功能强大的Java组件,为用户提供了处理和操作Word文档的各种功能和选项。无论是创建新文档、编辑现有文档还是将文档转换为其他格式,Aspose.Words for Java都是一个可靠的解决方案
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值