21xrx.com
2024-12-22 21:50:41 Sunday
登录
文章检索 我的文章 写文章
C++快速排序算法实现
2023-06-23 12:37:43 深夜i     --     --
C++ 快速排序算法 实现

快速排序算法是一种经典的排序算法,其时间复杂度为O(nlogn),效率比较高。C++中,可以通过递归实现快速排序算法。

下面是一份C++快速排序算法的实现:

void quick_sort(int *arr, int left, int right) {

  if (left >= right) return; // 递归边界,当左指针大于等于右指针时,直接返回

  int pivot = arr[left]; // 选取第一个元素为枢轴值

  int i = left, j = right; // 左右指针

  while (i < j) {

    // 从右往左找到一个比枢轴值小的数

    while (i < j && arr[j] >= pivot) j--;

    arr[i] = arr[j]; // 将该数移动到左侧

    // 从左往右找到一个比枢轴值大的数

    while (i < j && arr[i] <= pivot) i++;

    arr[j] = arr[i]; // 将该数移动到右侧

  }

  arr[i] = pivot; // 将枢轴值放入最终位置

  quick_sort(arr, left, i - 1); // 递归处理左半部分

  quick_sort(arr, i + 1, right); // 递归处理右半部分

}

以上代码的实现过程如下:

1.首先选取第一个元素为枢轴值,将左指针指向该元素位置,将右指针指向最后一个元素的位置。

2.从右往左找到一个比枢轴值小的数,将该数移动到左侧。

3.从左往右找到一个比枢轴值大的数,将该数移动到右侧。

4.重复执行第2步和第3步,直到左指针大于等于右指针。

5.将枢轴值放入最终位置,并按照递归的方式处理左半部分和右半部分。

快速排序算法的优点在于效率高,但其缺点也比较明显,当序列有序或者近乎有序时,其效率会退化成O(n^2),这时需要使用其他的排序算法。

总之,快速排序算法是一个经典的排序算法,其在实际应用中得到了广泛的使用。开发者在实现该算法时,应注意递归边界的判断和代码的细节问题,以确保算法的正确性和效率。

  
  

评论区

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