📜  QuickSort的C ++程序(1)

📅  最后修改于: 2023-12-03 14:46:51.241000             🧑  作者: Mango

QuickSort的C++程序介绍

什么是QuickSort?

QuickSort是一种经典的排序算法,也是最常用的排序算法之一。它的基本思想是选取一个基准元素,将序列中小于等于它的元素移到左边,大于它的元素移到右边,然后对左右两个子序列分别进行快速排序,直到子序列长度为1或0。

QuickSort算法的时间复杂度为O(nlogn),空间复杂度为O(logn)。

QuickSort的C++程序实现

以下是一个简单的QuickSort的C++程序实现,使用递归方法实现快速排序。

#include <iostream>
using namespace std;

void partition(int arr[], int left, int right)
{
    int i = left, j = right;
    int tmp;
    int pivot = arr[(left + right) / 2];
    
    // 分区操作
    while (i <= j) 
    {
        while (arr[i] < pivot)
            i++;
        while (arr[j] > pivot)
            j--;
        if (i <= j) {
            tmp = arr[i];
            arr[i] = arr[j];
            arr[j] = tmp;
            i++;
            j--;
        }
    };
    
    // 递归调用
    if (left < j)
        partition(arr, left, j);
    if (i < right)
        partition(arr, i, right);
}

void quickSort(int arr[], int len)
{
    partition(arr, 0, len - 1);
}

int main()
{
    int arr[] = { 5,7,2,6,8,1,4,3 };
    int len = sizeof(arr) / sizeof(int);

    quickSort(arr, len);

    for (int i = 0; i < len; i++)
        cout << arr[i] << " ";

    return 0;
}
代码解释
  • partition函数:分区操作,其中ij分别初始化为序列的左侧和右侧位置,pivot为选取的基准元素,使用while循环将小于等于基准元素的元素移到左侧,将大于基准元素的元素移到右侧,循环结束后将左右两个子序列再次进行快速排序。

  • quickSort函数:快速排序函数,传入参数为数组和数组长度,调用partition函数进行排序。

  • main函数:主函数,定义一个数组并且调用quickSort函数进行排序。

总结

快速排序算法是一种经典且常用的排序算法,C++语言实现较为简单明了,但需要注意指针的使用和数组长度的计算。