Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c++ 排序算法

作者:颠峰神射   发布日期:2026-04-19   浏览:69

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

// 快速排序示例
void quickSort(std::vector<int>& arr) {
    if (arr.size() <= 1) return;

    int pivot = arr[arr.size() / 2];
    std::vector<int> left, right;

    for (int i = 0; i < arr.size(); ++i) {
        if (i == arr.size() / 2) continue;
        if (arr[i] < pivot) left.push_back(arr[i]);
        else right.push_back(arr[i]);
    }

    quickSort(left);
    quickSort(right);

    arr.clear();
    for (int num : left) arr.push_back(num);
    arr.push_back(pivot);
    for (int num : right) arr.push_back(num);
}

// 冒泡排序示例
void bubbleSort(std::vector<int>& arr) {
    int n = arr.size();
    for (int i = 0; i < n - 1; ++i) {
        for (int j = 0; j < n - i - 1; ++j) {
            if (arr[j] > arr[j + 1]) {
                std::swap(arr[j], arr[j + 1]);
            }
        }
    }
}

// 使用 C++ STL 的 sort 函数
void stlSort(std::vector<int>& arr) {
    std::sort(arr.begin(), arr.end());
}

int main() {
    std::vector<int> arr = {64, 34, 25, 12, 22, 11, 90};

    // 选择一个排序算法进行演示
    quickSort(arr);  // 或者使用 bubbleSort(arr); 或者 stlSort(arr);

    std::cout << "Sorted array: ";
    for (int num : arr) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

解释说明:

  1. 快速排序(Quick Sort):

    • 快速排序是一种分治算法,通过选择一个“基准”元素将数组分成两个子数组,递归地对这两个子数组进行排序。
    • quickSort 函数中,我们选择了中间元素作为基准,并将小于基准的元素放到左边,大于基准的元素放到右边。然后递归地对左右两个子数组进行排序。
  2. 冒泡排序(Bubble Sort):

    • 冒泡排序是一种简单的排序算法,它重复地遍历要排序的列表,依次比较相邻的元素并交换它们的位置,如果它们的顺序错误。
    • bubbleSort 函数中,我们通过两层循环来实现冒泡排序,外层循环控制遍历次数,内层循环进行相邻元素的比较和交换。
  3. STL 排序(STL Sort):

    • C++ 标准库提供了高效的排序函数 std::sort,它使用了混合排序算法(通常是快速排序、堆排序和插入排序的组合),性能非常好。
    • stlSort 函数展示了如何使用 std::sort 对数组进行排序。
  4. 主函数(main):

    • main 函数中,我们定义了一个待排序的数组,并调用不同的排序函数对其进行排序。最后输出排序后的结果。

你可以根据需要选择不同的排序算法进行测试。

上一篇:c++ 串口通讯

下一篇:c++double保留小数点后几位

大家都在看

c++闭包

c++向上取整的代码

c++单引号和双引号的区别

c++ 注释

c++如何判断素数

c++怎么输入字符串

c++ functional

c++框架代码

c++格式化字符串

c++ orm框架

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站