21xrx.com
2025-06-16 09:40:21 Monday
登录
文章检索 我的文章 写文章
C++降序排序算法
2023-07-12 07:45:54 深夜i     17     0
C++ 降序排序 算法

C++是一门高性能的编程语言,它具有很好的扩展性和灵活性,在各个领域都得到广泛的应用。在算法方面,C++也有很多强大的排序算法可以使用,其中降序排序算法是一个非常常用的算法,下面我们就来介绍一下C++中的降序排序算法。

C++中的降序排序算法主要有两种,分别是快速排序和归并排序。其中,快速排序是一种基于分治思想的排序算法,其基本思想是将一个大问题分解成若干个小问题,然后将小问题按照递归方式解决。而归并排序则是一种基于分治思想的排序算法,其基本思想是将一个序列分成两部分,分别进行排序,然后将两个有序的子序列合并成一个有序的序列。

具体来说,在C++中使用快速排序算法进行降序排序的代码如下:

#include <iostream>
#include <algorithm>
using namespace std;
void quickSort(int arr[], int left, int right) {
  if (left >= right) return;
  int pivot = arr[left], l = left, r = right;
  while (l < r) {
    while (l < r && arr[r] <= pivot) r--;
    while (l < r && arr[l] >= pivot) l++;
    swap(arr[l], arr[r]);
  }
  swap(arr[left], arr[l]);
  quickSort(arr, left, l - 1);
  quickSort(arr, l + 1, right);
}
int main() {
  int arr[] = 1;
  int len = sizeof(arr) / sizeof(arr[0]);
  quickSort(arr, 0, len - 1);
  for (int i = 0; i < len; i++)
    cout << arr[i] << " ";
  return 0;
}

而在C++中使用归并排序算法进行降序排序的代码则如下所示:

#include <iostream>
#include <algorithm>
using namespace std;
void merge(int arr[], int l, int m, int r) {
  int* tmp = new int[r - l + 1];
  int i = l, j = m + 1, k = 0;
  while (i <= m && j <= r) {
    if (arr[i] >= arr[j]) tmp[k++] = arr[i++];
    else tmp[k++] = arr[j++];
  }
  while (i <= m) tmp[k++] = arr[i++];
  while (j <= r) tmp[k++] = arr[j++];
  for (int i = 0; i < k; i++) arr[l + i] = tmp[i];
  delete[] tmp;
}
void mergeSort(int arr[], int l, int r) {
  if (l >= r) return;
  int mid = (l + r) / 2;
  mergeSort(arr, l, mid);
  mergeSort(arr, mid + 1, r);
  merge(arr, l, mid, r);
}
int main() {
  int arr[] = 6;
  int len = sizeof(arr) / sizeof(arr[0]);
  mergeSort(arr, 0, len - 1);
  for (int i = 0; i < len; i++)
    cout << arr[i] << " ";
  return 0;
}

以上便是在C++中进行降序排序的两种基本算法,两者都有各自的优缺点,具体使用时需要结合实际场景选择最合适的算法。除此之外,C++标准库也提供了sort()函数,其内部实现采用了一些高级的排序算法并进行了优化,可以用来进行降序排序,使用方法如下:

sort(arr, arr + len, greater<int>());

以上便是关于C++中降序排序算法的介绍,希望能对大家有所帮助。

  
  

评论区