21xrx.com
2024-12-22 17:30:06 Sunday
登录
文章检索 我的文章 写文章
C++快速排序算法实现
2023-07-09 20:29:55 深夜i     --     --
C++ 快速排序 算法 实现

快速排序算法是一种高效的排序算法,它使得排序过程的时间复杂度可以达到 O(nlogn),这使它成为最常用的排序算法之一。

快速排序排序算法的实现使用了分治的思想,它的基本思想是将待排序的数组按照一个基准数进行划分,分成左右两个子序列,一次只对一个子序列进行排序,最终将整个序列排好序。

下面介绍一下C++中快速排序算法的实现过程。

1. 确定基准数pivot

在快速排序中,pivot的选择对排序的效率有着很大的影响。通常情况下,我们选择序列中的第一个元素作为pivot,或者使用随机数的方式来选择pivot。

2. 划分子序列

将待排序序列按照pivot进行划分,把比pivot小的数放在左边,比pivot大的数放在右边。

3. 分别对左右两个子序列进行递归排序

递归调用快速排序算法,对左右子序列进行排序。

4. 将左、中、右三段有序序列合并

在每次划分子序列之后,左边的子序列一定比pivot小,右边的子序列一定比pivot大。因此,我们可以把已排序的左、中、右三个子序列合并起来,就可以得到完整的已排序序列。

以下是C++实现快速排序算法的示例代码:


#include <iostream>

using namespace std;

void quick_sort(int arr[], int left, int right)

{

 int i = left, j = right;

 int pivot = arr[left]; //将第一个元素作为基准数

 while (i <= j)

 {

  while (arr[i] < pivot) i++;

  while (arr[j] > pivot) j--;

  if (i <= j)

  {

   swap(arr[i], arr[j]);

   i++; j--;

  }

 }

 if (left < j)

 {

  quick_sort(arr, left, j);

 }

 if (i < right)

 {

  quick_sort(arr, i, right);

 }

}

int main()

{

 int arr[] = 3;

 int n = sizeof(arr) / sizeof(int);

 quick_sort(arr, 0, n-1);

 for (int i = 0; i < n; i++)

 {

  cout << arr[i] << " ";

 }

 cout << endl;

 return 0;

}

快速排序算法是一种高效的排序算法,但是在实际应用中还需要考虑多种因素,比如数据分布的情况、最坏情况下的时间复杂度等。因此,在使用快速排序算法之前,需要对数据进行分析和评估,以便选择合适的排序算法来解决实际问题。

  
  

评论区

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