21xrx.com
2024-12-22 18:43:18 Sunday
登录
文章检索 我的文章 写文章
C++数组排序的实现
2023-07-02 00:33:59 深夜i     --     --
C++ 数组排序 实现

C++ 的数组排序是日常编程中常用的一个功能,它可以帮助我们对数据进行快速的排序,以便后续的处理。在 C++ 中,有很多种数组排序算法可以选择,例如快速排序、冒泡排序、插入排序等等。下面将介绍一种常用的快速排序的实现方法。

快速排序的基本思路就是通过递归地将数组划分为两部分,使得左半部分小于等于一个基准值,右半部分大于等于该基准值。然后再对左右两部分进行递归排序,最终完成整个数组的排序。以下是 C++ 代码的实现:


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

  int i, j, pivot, temp;

  if (left < right) {

    pivot = left;

    i = left;

    j = right;

    while (i < j) {

      while (arr[i] <= arr[pivot] && i <= right)

        i++;

      while (arr[j] > arr[pivot])

        j--;

      if (i < j) {

        temp = arr[i];

        arr[i] = arr[j];

        arr[j] = temp;

      }

    }

    temp = arr[pivot];

    arr[pivot] = arr[j];

    arr[j] = temp;

    quicksort(arr, left, j - 1);

    quicksort(arr, j + 1, right);

  }

}

该函数接受三个参数:一个数组 `arr`,一个左边界 `left`,一个右边界 `right`。其中 `left` 和 `right` 表示当前需要排序的数组范围, `arr` 表示待排序数组。

在实现中,首先取左端点为基准值 `pivot`,然后左右指针 `i` 和 `j` 分别指向待排序范围的起始点和结尾点。接下来,我们用指针 `i` 从左向右扫描数组,当遇到一个比基准值大的元素时停止。然后用指针 `j` 从右向左扫描数组,当遇到一个比基准值小的元素时停止。如果此时 `i

最后,我们递归地对左右两部分进行排序。排序完成后,数组便被完全排好序了。

在使用该函数时,只需调用 `quicksort(arr, 0, n-1)` 即可,其中 `n` 为数组的大小。

总之,快速排序是一种高效的排序算法,它的时间复杂度为 O(nlogn),使用 C++ 实现也非常容易,希望本文能够帮助大家掌握该算法的实现。

  
  

评论区

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