21xrx.com
2024-11-22 08:10:59 Friday
登录
文章检索 我的文章 写文章
使用类编写C++快速排序算法代码
2023-07-01 18:51:25 深夜i     --     --
C++ 快速排序 算法 代码

快速排序算法是一种常用的排序算法,其思想是通过选取一个轴值,在每轮从待排序数组中将大于轴值的元素放在轴值的右边,小于等于轴值的元素放在轴值的左边。通过递归调用此过程不断将数组分为两部分,最终实现整个数组的排序。

使用类编写C++快速排序算法非常简单,只需要定义一个排序类,包含一个私有的快速排序函数和一个公有的排序函数即可。下面是一个实现快速排序的类的示例代码:


#include <vector>

using namespace std;

class QuickSort {

private:

 static void sort(vector<int>& arr, int left, int right) {

  if (left < right) {

   int pivot = arr[left]; // 选取轴值

   int i = left, j = right;

   while (i < j) {

    while (i < j && arr[j] > pivot) j--; // 在右边找到一个小于等于轴值的元素

    if (i < j) arr[i++] = arr[j];

    while (i < j && arr[i] <= pivot) i++; // 在左边找到一个大于轴值的元素

    if (i < j) arr[j--] = arr[i];

   }

   arr[i] = pivot;

   sort(arr, left, i - 1); // 递归调用左半部分

   sort(arr, i + 1, right); // 递归调用右半部分

  }

 }

public:

 static void sort(vector<int>& arr) { // 对外公开的排序函数

  sort(arr, 0, arr.size() - 1);

 }

};

在排序类中,我们定义了一个私有的排序函数`sort`,该函数接受一个待排序的数组`arr`、左右索引`left`和`right`作为参数,对数组进行快速排序。如果`left`小于`right`,说明数组需要进行排序,我们从数组的左边开始选取一个元素作为轴值,然后在数组中寻找大于轴值的元素和小于等于轴值的元素,交换它们的位置,最终将轴值放到正确的位置上。

接下来,我们通过递归调用`sort`函数继续对左右两个部分进行排序,直到整个数组排序完成。

为了方便使用,我们还定义了一个对外公开的排序函数`sort`,该函数接受一个待排序的数组`arr`作为参数,并调用私有的排序函数进行排序。

可以通过以下方式调用该快速排序算法:


vector<int> arr = {5, 4, 3, 2, 1};

QuickSort::sort(arr);

这样就可以对`arr`数组进行快速排序。

总之,使用类编写C++快速排序算法是一种非常方便和实用的方法,可以帮助我们更好地组织代码和实现算法。希望以上代码可以帮助到大家。

  
  
下一篇: C++字符串反转

评论区

{{item['qq_nickname']}}
()
回复
回复