快速排序 sort

C++自学精简教程 目录(必读)​​​​​​​

sort可以对vector的元素进行排序

1. sort对vector<int>的元素排序

按从小到大排

#include <iostream>
#include <vector>
#include <algorithm>

int main(void)
{
    std::vector<int> arr{ 1,3,5,7,9,2,4,6,8 };
    //对vector的所有元素排序 a < b < c ...
    std::sort(arr.begin(), arr.end());
    for (auto ele : arr)
    {
        std::cout << ele << " ";
    }

    return 0;
}

输出:

2. sort对vector<string>排序

按字母顺序排

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

int main(void)
{
    std::vector<std::string> arr{ "zhang_san","li_si","wang_er","ma_zi","cao_cao", "liu_bei"};
    std::sort(arr.begin(), arr.end());
    for (auto ele : arr)
    {
        std::cout << ele << std::endl;
    }

    return 0;
}

输出:

### 快速排序(QuickSort)算法中 `sort` 函数的使用 在不同编程语言中实现快速排序时,通常不会直接调用名为 `sort` 的函数来执行快速排序;相反,会定义一个专门用于快速排序的方法或函数。然而,在某些情况下,可以利用内置的 `sort` 方法并自定义比较器来模拟快速排序的行为。 对于 Python 中基于列表的操作,虽然标准库提供了 `.sort()` 和 `sorted()` 这样的通用排序接口[^2],但为了展示快速排序的具体机制,下面给出了一种不依赖于这些内建功能的手动实现方式: ```python def quick_sort(arr): if len(arr) <= 1: return arr else: pivot = arr[len(arr) // 2] left = [x for x in arr if x < pivot] middle = [x for x in arr if x == pivot] right = [x for x in arr if x > pivot] return quick_sort(left) + middle + quick_sort(right) # 使用示例 unsorted_list = [3, 6, 8, 10, 1, 2, 1] print("原始数组:", unsorted_list) sorted_list = quick_sort(unsorted_list) print("已排序数组:", sorted_list) ``` 这段代码展示了如何通过递归来分割输入序列直到每个子集只含有单个元素,之后再逐步合并它们形成最终有序的结果。值得注意的是,这里并没有直接使用任何叫做 `sort` 或者 `sortWith` 的现成函数[^1]。 #### 关键点解释 - **基准选择**:选择了中间位置作为基准值 (`pivot`) 来划分数据集合。 - **分区过程**:创建三个新的列表分别存储小于、等于以及大于基准值的所有项。 - **递归处理**:对左侧和右侧两个较小规模的数据集重复上述步骤直至完成整个排序流程。 尽管如此,在实际应用中如果确实需要高效地对大量数据进行排序,则应该优先考虑使用经过高度优化的标准库提供的排序方法,因为那些往往已经针对性能做了很多改进工作。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

C++程序员Carea

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

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

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

打赏作者

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

抵扣说明:

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

余额充值