21xrx.com
2024-11-08 21:17:48 Friday
登录
文章检索 我的文章 写文章
C++降序排序算法
2023-07-12 07:45:54 深夜i     --     --
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++中降序排序算法的介绍,希望能对大家有所帮助。

  
  

评论区

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