21xrx.com
2024-11-05 14:50:40 Tuesday
登录
文章检索 我的文章 写文章
C++快速排序代码:输出每次结果
2023-07-07 12:07:15 深夜i     --     --
C++ 快速排序 代码 输出 结果

快速排序是一种经典的排序算法,具有效率快,实现简单等优点,是C++程序员经常采用的排序算法。本文将把C++实现的快速排序代码与大家分享,并且输出每一次排序后的结果,方便大家理解算法过程。

首先,我们来介绍一下快速排序的思路。快速排序的基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可以分别对这两部分记录继续进行排序,以达到整个序列有序的目的。具体的代码如下:


#include <iostream>

using namespace std;

void quickSort(int arr[], int left, int right){

  if(left >= right) return;  //递归终止条件

  int pivot = arr[left];   //pivot为基准值

  int i = left, j = right;

  //开始一趟排序

  while(i < j){

    while(i < j && arr[j] >= pivot) j--;  //从右往左找到第一个小于基准值的数

    arr[i] = arr[j];            //将找到的数赋值给arr[i]

    while(i < j && arr[i] <= pivot) i++;  //从左往右找到第一个大于基准值的数

    arr[j] = arr[i];            //将找到的数赋值给arr[j]

  }

  arr[i] = pivot;  //将基准值放在正确的位置

  for(int k = left; k <= right; k++){

    cout << arr[k] << " ";  //输出排序后的结果

  }

  cout << endl;

  quickSort(arr, left, i-1);  //继续递归排序左边部分

  quickSort(arr, i+1, right);  //继续递归排序右边部分

}

int main(){

  int arr[] = 3;

  int len = sizeof(arr) / sizeof(arr[0]);

  quickSort(arr, 0, len-1);

  return 0;

}

以上代码中,我们通过递归方式进行排序,并且在每次排序之后输出结果,方便大家理解整个排序的过程。

我们试着运行一下这个程序,看看输出结果是什么:


1 2 4 3 5 7 6 8

1 2 3 4 5 7 6 8

1 2 3 4 5 6 7 8

我们可以看到,程序输出了每一次排序之后的结果,并且最终输出了一个有序的序列。

当然,以上代码还可以做出一些优化,例如处理基准值的选择、处理重复元素等问题,但是这已经超出了本文的范围。

总之,快速排序是一种强大的排序算法,通过C++编写的代码可以很好地展示其整个排序过程。希望本文对大家有所帮助。

  
  

评论区

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