数据结构与算法C++实现10:快速排序

1 最流行的排序算法、速度最快的排序算法
2 1962年,C.A.R. Hoare 发明了快速排序算法
3 privot: 枢轴、枢纽
4 快速排序算法是一个递归的算法
5 见案例(QuickSort.cpp)

//
// Created by z on 20-2-16.
// 快速排序代码演示
//
#include 

using namespace std;

// 函数定义  arg1:指向待排序数组的指针   arg2:待排序数组的低位下标   arg3:待排序数组的高位下标
void QuickSort(int* a, int low, int high);

int main()
{

    int arr[] = {10, 5, 32, 23, 56, 12, 24, 57, 83, 190};
    for(int i = 0; i < 10; i++)
        cout << arr[i] << ",";
    cout << endl;

    QuickSort(arr, 0, 9);
    for(int i = 0; i < 10; i++)
        cout << arr[i] << ",";
    cout << endl;

    return 0;
}

void QuickSort(int* a, int low, int high)
{
    if(low >= high)     // 递归进行快排结束的标志
        return;

    int first = low;
    int last = high;
    int key = a[first]; // 用字表的第一个记录作为枢轴

    while(first < last)
    {

        while(first < last && a[last] >= key)   // 从last向first进行遍历,寻找比枢轴小的数值
            --last; // 未找到的时候继续遍历
        a[first] = a[last]; // 找到之后,将比枢轴小的移到低端

        while(first < last && a[first] <= key)
            ++first;
        a[last] = a[first];

    }
    a[first] = key; // 枢轴记录到位

    QuickSort(a, low, first - 1);   // 递归
    QuickSort(a, first + 1, high);
}


6 视频讲解地址:https://www.bilibili.com/video/av15651617?from=search&seid=11442531101300608460

你可能感兴趣的:(数据结构与算法)