21xrx.com
2025-03-30 19:47:06 Sunday
文章检索 我的文章 写文章
C++快速排序入门教程
2023-07-05 00:42:45 深夜i     7     0
C++ 快速排序 入门 教程

快速排序是一种常用的排序算法,也是C++中排序算法中的一种。它的思想是选择一个基准元素,把数组中小于它的元素放在它的左边,大于它的元素放在它的右边,递归地处理左右两个子数组,直到整个数组有序。该算法的时间复杂度为O(nlogn)。

以下是C++中快速排序的代码实现:

void quicksort(int arr[], int left, int right) {
  int i = left, j = right;
  int temp;
  int pivot = arr[(left+right)/2];
  
  // partition
  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--;
    }
  }
  
  // recursion
  if (left < j)
    quicksort(arr, left, j);
  if (i < right)
    quicksort(arr, i, right);
}

该函数有三个参数:数组、左边界和右边界。首先,选择一个基准元素pivot,这里选择数组中间的元素。然后,从左向右找到一个大于等于pivot的元素,从右向左找到一个小于等于pivot的元素,然后交换它们。重复这个过程直到左指针i大于右指针j,将数组分为左右两个子数组。递归地调用quicksort函数处理左右两个子数组,直到子数组只包含一个元素为止。

快速排序是一种高效的排序算法,但它涉及到递归和数组操作,因此需要仔细考虑边界条件和处理数组的代码。理解和掌握该算法可以提高编程技能和解决实际问题的能力。

  
  

评论区

请求出错了