21xrx.com
2025-03-21 21:07:59 Friday
文章检索 我的文章 写文章
王道书:快排算法c++实现
2023-07-05 01:30:44 深夜i     15     0
王道书 快排算法 C++实现

快排算法是一种高效的排序算法,其核心思想是将一个待排序的数组分成两个部分,一部分小于基准值,一部分大于基准值,然后对这两个部分进行递归排序,最终得到一个有序的数组。

在C++语言中,实现快排算法需要对数组进行分割和排序,具体步骤如下:

1.选择基准值,一般选择数组中的第一个元素;

2.将数组中比基准值小的元素放到左边,比基准值大的元素放到右边;

3.递归排序左边的子数组和右边的子数组;

4.将左、右两个子数组合并成一个有序的数组。

以下是实现快排算法的C++代码:

//快速排序算法实现
#include<iostream>
using namespace std;
void quick_sort(int a[], int low, int high)
{
  int i, j, temp, pivot;
  if(low < high) {
    i = low;
    j = high;
    pivot = a[low];
    while(i < j) {
      while(i < j && a[j] >= pivot)
        j--;
      if(i < j)
        a[i++] = a[j];
      while(i < j && a[i] < pivot)
        i++;
      if(i < j)
        a[j--] = a[i];
    }
    a[i] = pivot;
    quick_sort(a, low, i-1);
    quick_sort(a, i+1, high);
  }
}
int main()
{
  int n = 0;
  cout << "请输入要排序的数字个数:"<<endl;
  cin >> n; //输入数字个数
  int *a = new int[n]; //动态申请数组
  cout << "请输入需要排序的数字:"<<endl;
  for (int i = 0; i < n; i++)
  {
    cin >> a[i]; //输入需要排序的数字
  }
  quick_sort(a,0,n-1); //调用快速排序算法
  cout<<"排序后的结果为:"<<endl;
  for(int i=0;i<n;i++)
  {
    cout<<a[i]<<' '; //输出排序后的结果
  }
  return 0;
}

以上就是利用C++实现快速排序算法的方法,通过这个例子,我们可以清晰地了解快排算法的思路和实现方法,并且熟悉C++中常用的数组和递归等知识点。相信通过学习,你也可以编写出一个优秀的快速排序算法。

  
  

评论区