21xrx.com
2025-04-23 21:08:41 Wednesday
文章检索 我的文章 写文章
C++快速排序算法:输出每一次排序结果
2023-06-22 12:34:45 深夜i     22     0
C++ 快速排序 算法 排序结果 输出

在计算机科学中,排序是一种经常使用的算法。快速排序算法是一种高效的排序方法之一。它通过将待排序的数据分成若干个子集,并对每个子集进行排序,最终将它们合并起来得到有序的输出结果。在C++中,我们可以通过快速排序算法快速排序一个数组并输出每一次排序结果。

快速排序算法的实现可以通过递归的方式来实现。首先,我们需要定义一个函数quickSort()来进行快速排序。这个函数是一个递归函数,它需要接收一个数组以及数组的起始位置和终止位置作为参数。

在这个函数中,我们需要选择一个基准元素(通常选择数组的第一个元素)作为枢轴,并将数组分为两部分。具体过程为:将数组中小于等于枢轴的元素放在枢轴的左边,将数组中大于枢轴的元素放在枢轴的右边。然后,递归地对左右两部分进行排序,最后合并起来得到有序的数组。

使用C++语言实现快速排序算法如下:

#include<iostream>
using namespace std;
void quickSort(int arr[], int left, int right){
  int i = left, j = right;
  int temp;
  int pivot = arr[(left + right) / 2];
  while(i <= j){
    while(arr[i] < pivot){
      i++;
    }
    while(arr[j] > pivot)
      j--;
    
    if(i <= j){
      temp = arr[i];
      arr[i] = arr[j];
      arr[j] = temp;
      i++;
      j--;
    }
  }
  if(left < j){
    quickSort(arr, left, j);
  }
  if(i < right){
    quickSort(arr, i, right);
  }
}
int main(){
  int arr[] = 7;
  int n = sizeof(arr)/sizeof(arr[0]);
  quickSort(arr, 0, n-1);
  for(int i=0; i<n; i++){
    cout << arr[i] << " ";
  }
  return 0;
}

以上代码实现了快速排序算法,并输出了最终的排序结果。如果我们想输出每一次排序的结果,可以在quickSort()函数的递归调用前加上输出语句,如下所示:

void quickSort(int arr[], int left, int right){
  int i = left, j = right;
  int temp;
  int pivot = arr[(left + right) / 2];
  while(i <= j){
    while(arr[i] < pivot){
      i++;
    }
    while(arr[j] > pivot)
      j--;
    
    if(i <= j){
      temp = arr[i];
      arr[i] = arr[j];
      arr[j] = temp;
      i++;
      j--;
    }
  }
  cout << "排序结果:" << endl;
  for(int k=0; k<=right; k++){
    cout << arr[k] << " ";
  }
  cout << endl;
  if(left < j){
    quickSort(arr, left, j);
  }
  if(i < right){
    quickSort(arr, i, right);
  }
}

这样,每次排序结果都会被输出,可以方便我们对算法的实现进行调试和观察。

总之,快速排序算法是一种非常高效的排序算法。在C++中,我们可以通过递归实现快速排序,并输出每一次排序结果。掌握这个方法可以帮助我们更深入地理解快速排序算法的实现过程和优化方法。

  
  

评论区