21xrx.com
2024-11-22 07:35:57 Friday
登录
文章检索 我的文章 写文章
C++中快速排序函数的实现
2023-07-04 14:13:44 深夜i     --     --
C++ 快速排序 函数 实现

快速排序是一种常见的基于比较的排序算法,其在C++中的实现十分高效。快速排序算法的基本思想是选定一个基准值,将待排序的数组分为两部分,一部分小于基准值,另一部分大于基准值。然后对这两部分分别进行快速排序,直到整个数组有序。快速排序算法的时间复杂度为O(nlogn),是一种效率非常高的排序算法。

在C++中实现快速排序的函数如下:


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

  int i, j, pivot;

  if (left < right) {

    i = left;

    j = right;

    pivot = arr[left]; //选定基准值,左侧第一个数为基准值

    while (i < j) {

      while (i < j && arr[j] >= pivot) // 在右半部分寻找小于基准值的数

        j--;

      if (i < j)

        arr[i++] = arr[j];

      while (i < j && arr[i] < pivot) //在左半部分寻找大于等于基准值的数

        i++;

      if (i < j)

        arr[j--] = arr[i];

    }

    arr[i] = pivot;

    quick_sort(arr, left, i - 1); // 对左半部分排序

    quick_sort(arr, i + 1, right); // 对右半部分排序

  }

}

在以上代码中,使用了递归方式对左右两部分进行快速排序。通过选择一个基准值,分别从左右两个方向开始遍历数组,满足左侧大于等于基准值,右侧小于基准值的条件,则交换两侧的元素。直到左右两侧遍历完成,并且i和j重合,此时的位置即为基准值的正确位置。接着将数组划分为两部分,在分别对这两部分进行递归排序。

使用快速排序的函数可以对任意类型的数组进行排序,只需要传入数组和数组的起始地址和结束地址即可。个人觉得这是一种非常有效的算法实现方法,对C++学习者而言更是不可或缺的重要一课。

  
  

评论区

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