快排 C++

100 20 10 7 8 9 1 5 6 3 2 4

1 3 2 4 8 9 100 5 6 20 10 7

1 3 2

1 2 3

8 9 100 5 6 20 10 7

5 6 7 8 9 20 10 100

5 6

5 6

8 9 20 10 100

8 9 20 10 100

8 9 20 10

8 9 10 20

8 9

8 9

Sorted array:

1 2 3 4 5 6 7 8 9 10 20 100
PS F:\BC\2024\9\28> ./Main7

100 20 10 7 8 9 1 5

1 5 10 7 8 9 100 20

10 7 8 9 100 20

10 7 8 9 20 100

10 7 8 9

7 8 9 10

7 8

7 8

Sorted array:

1 5 7 8 9 10 20 100

cpp 复制代码
#include<iostream>
using namespace std;

void printArray(int arr[], int low, int high) {
    for (int i = low; i <= high; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;        
}

int partition(int arr[], int low, int high) {    
    printArray(arr,low,high);
    int pivot = arr[high];// 选择最后一个元素作为基准
    int i = (low - 1);//小于基准的元素索引

    for (int j = low; j <= high - 1; j++) {
        if (arr[j] < pivot) {
            i++;
            swap(arr[i], arr[j]);//交换元素
        }
    }
    swap(arr[i + 1], arr[high]); // 将基准放到正确的位置
    printArray(arr,low,high);
    cout<<endl;
    return (i + 1);//返回基准的最终位置
}

void quickSort(int arr[], int low, int high) {
    if (low < high) {
        int pi = partition(arr, low, high);// 获取分区点
        quickSort(arr, low, pi - 1);// 递归排序左子数组
        quickSort(arr, pi + 1, high);// 递归排序右子数组
    }
}

int main() {
    int arr[] = { 100,20,10, 7, 8, 9, 1, 5 };
    int n = sizeof(arr) / sizeof(arr[0]);
    //printArray(arr, 0, n - 1);
    quickSort(arr, 0, n - 1);
    cout << "Sorted array: \n";
    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
    return 0;
}
相关推荐
Django强哥5 分钟前
JSON Schema Draft-07 详细解析
javascript·算法·代码规范
AndrewHZ6 分钟前
【图像处理基石】GIS图像处理入门:4个核心算法与Python实现(附完整代码)
图像处理·python·算法·计算机视觉·gis·cv·地理信息系统
杨小码不BUG34 分钟前
蛇形舞动:矩阵填充的艺术与算法(洛谷P5731)
c++·算法·矩阵·csp-j/s·循环控制
MicroTech202544 分钟前
微算法科技(NASDAQ:MLGO)开发延迟和隐私感知卷积神经网络分布式推理,助力可靠人工智能系统技术
人工智能·科技·算法
Boop_wu2 小时前
[数据结构] Map和Set
java·数据结构·算法
要一起看日出2 小时前
数据结构------二叉查找树
数据结构·二叉查找树
思考的笛卡尔3 小时前
密码学基础:RSA与AES算法的实现与对比
网络·算法·密码学
小许学java7 小时前
数据结构-ArrayList与顺序表
java·数据结构·顺序表·arraylist·线性表
格林威9 小时前
常规线扫描镜头有哪些类型?能做什么?
人工智能·深度学习·数码相机·算法·计算机视觉·视觉检测·工业镜头
程序员莫小特11 小时前
老题新解|大整数加法
数据结构·c++·算法