21xrx.com
2024-05-09 23:08:34 Thursday
登录
文章检索 我的文章 写文章
C++实现快速排序算法
2023-08-05 12:45:02 深夜i     --     --
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++中,通过使用递归方法,我们可以简洁地实现快速排序算法。这是一种非常重要的排序算法,它在实际开发中被广泛应用。

  
  

评论区

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