21xrx.com
2024-12-27 19:35:33 Friday
登录
文章检索 我的文章 写文章
C++大到小排序方法
2023-06-27 00:07:20 深夜i     --     --
C++排序 大到小排序 排序方法 快速排序 归并排序

C++是一种非常流行的编程语言,它支持各种各样的排序方法。将列表或数组按照从大到小的顺序排序是一种常见的需求。在本文中,我们将介绍几种在C++中实现大到小排序的方法。

1. 冒泡排序法

冒泡排序法是一种简单但慢的排序方法。它的思路是通过相邻元素之间的比较和交换来把大的元素向右移动,并将小的元素向左移动,从而实现排序。以下是实现该方法的C++代码:


void bubbleSort(int arr[], int n) {

 for (int i = 0; i < n; i++) {

  for (int j = 0; j < n - i - 1; j++) {

   if (arr[j] < arr[j + 1]) { // 如果左边的元素比右边的元素小,那么就交换它们的位置

    int temp = arr[j];

    arr[j] = arr[j + 1];

    arr[j + 1] = temp;

   }

  }

 }

}

2. 快速排序法

快速排序法是一种常见的高效排序方法。它的基本思想是通过递归地将列表分成较小的列表,然后将它们合并成有序的列表。以下是实现该方法的C++代码:


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

 int i = left, j = right;

 int pivot = arr[(left + right) / 2]; // 选择一个支点

 while (i <= j) {

  while (arr[i] > pivot) // 如果左边的元素比支点大,那么就向右移动

   i++;

  while (arr[j] < pivot) // 如果右边的元素比支点小,那么就向左移动

   j--;

  if (i <= j) { // 如果左边的数比右边的数小,那么就交换它们的位置

   int temp = arr[i];

   arr[i] = arr[j];

   arr[j] = temp;

   i++;

   j--;

  }

 }

 if (left < j) // 递归调用快速排序来处理左边的子列表

  quickSort(arr, left, j);

 if (i < right) // 递归调用快速排序来处理右边的子列表

  quickSort(arr, i, right);

}

3. 插入排序法

插入排序法是一种简单但慢的排序方法。它的思路是从未排序的列表中挑选一个元素,然后逐个比较已排序的列表,将挑选的元素插入到正确的位置。以下是实现该方法的C++代码:


void insertionSort(int arr[], int n) {

 for (int i = 1; i < n; i++) {

  int key = arr[i];

  int j = i - 1;

  while (j >= 0 && arr[j] < key) { // 如果在已排序列表中找到比key小的元素,那么就将它们向右移动

   arr[j + 1] = arr[j];

   j--;

  }

  arr[j + 1] = key; // 将key插入到正确位置

 }

}

综上所述,C++中有多种方法可以实现大到小排序。冒泡排序法、快速排序法和插入排序法都是流行的方法,可以根据具体的情况选择最适合的方法来实现排序。

  
  

评论区

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