21xrx.com
2024-11-05 22:03:28 Tuesday
登录
文章检索 我的文章 写文章
王道书:快排算法c++实现
2023-07-05 01:30:44 深夜i     --     --
王道书 快排算法 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++中常用的数组和递归等知识点。相信通过学习,你也可以编写出一个优秀的快速排序算法。

  
  

评论区

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