0
点赞
收藏
分享

微信扫一扫

数据结构-排序(五)快速排序

本文详细介绍了快速排序的算法思想、代码实现和算法效率分析,还包括示例和可视化动图,易理解!
Let’s go!🏃‍♂️

数据结构-排序(五)快速排序

1、算法思想

2、代码实现

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

/**
 * 用第一个元素将待排序序列划分成左右两个部分
 * @param arr
 * @param low
 * @param high
 * @return
 */
int Partition(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[high] = pivot; //枢轴元素存放到最终位置
    return low;
}
/**
 * 快速排序
 * @param arr
 * @param low
 * @param high
 */
void QuickSort(int arr[], int low, int high) {
    if (low < high) {
        int pivotPos = Partition(arr, low, high);
        QuickSort1(arr, low, pivotPos - 1); //划分左子表
        QuickSort1(arr, pivotPos + 1, high); //划分右子表
    }
}
/**
 * 输出数组
 * @param arr
 * @param n
 */
void PrintArray(int arr[], int n) {
    for (int i = 0; i < n; i++) {
        cout << arr[i] << "  ";
    }
    printf("\n");
}
int main() {
    int arr[] = {12, 28, 20, 50, 48, 1, 5, 28};
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << "输出arr初始数组" << endl;
    PrintArray(arr, n);
    cout << "arr快速排序" << endl;
    QuickSort(arr, 0, n - 1);
    cout << "输出arr排序后数组" << endl;
    PrintArray(arr, n);
    return 0;
}

3、算法效率分析

举报

相关推荐

0 条评论