21xrx.com
2025-03-31 16:45:26 Monday
文章检索 我的文章 写文章
C++实现快速排序算法
2023-08-05 12:45:02 深夜i     14     0
C++ 快速排序 算法 实现 排序

快速排序(Quicksort)是一种高效的排序算法,被广泛应用于各种编程语言中。它的基本原理是通过将数组或列表分割成较小的部分,然后对这些部分进行排序,最后再将它们合并起来。这种分治策略的算法在大多数情况下具有较好的性能。

在C++中,实现快速排序算法相对简单。下面是一个基于递归的快速排序算法的示例代码:

#include <iostream>
using namespace std;
// 交换两个数的值
void swap(int* a, int* b) {
  int temp = *a;
  *a = *b;
  *b = temp;
}
// 选择一个基准点,并对数据进行分割
int partition(int arr[], int low, int 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]);
  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);
  }
}
// 打印数组
void printArray(int arr[], int size) {
  for (int i = 0; i < size; i++) {
    cout << arr[i] << " ";
  }
  cout << endl;
}
int main() {
  int arr[] = 12;
  int n = sizeof(arr) / sizeof(arr[0]);
  quickSort(arr, 0, n - 1);
  cout << "排序后的数组:\n";
  printArray(arr, n);
  return 0;
}

上述代码中,首先定义了一个swap函数,用来交换两个数的值。然后,定义了一个partition函数,该函数选择一个基准点,并根据基准点将数组分割成两部分。其中,大于基准点的数被放到右边,小于基准点的数被放到左边。

接着,使用递归方法,依次对左右两个分割后的子数组进行快速排序。最后,通过main函数,传入一个未排序的数组进行测试。对数组进行快速排序后,再次通过printArray函数将排序后的数组打印出来。

快速排序算法的时间复杂度为O(nlogn),其中n为数组大小。它是一种极其高效的排序算法,尤其对大规模数据的排序效果显著。

在C++中,通过使用递归方法,我们可以简洁地实现快速排序算法。这是一种非常重要的排序算法,它在实际开发中被广泛应用。

  
  

评论区

请求出错了