21xrx.com
2024-05-20 06:18:32 Monday
登录
文章检索 我的文章 写文章
C++基础:从大到小排序
2023-07-10 12:10:44 深夜i     --     --
C++ 基础 排序 从大到小 数组

在编程中,排序是一个基础且非常重要的操作,因为我们往往需要将一组数据按照一定规则排列起来,以便更方便地进行查找、统计等操作。其中,从大到小排序也是一种常见的排序方式。下面我们来介绍一下如何使用C++语言实现从大到小排序。

首先,我们可以选择使用C++ STL标准模板库中的sort()函数来进行排序。该函数的调用方式如下:


sort(first, last, compare);

其中,第一个参数first表示待排序数组的起始位置,第二个参数last表示待排序数组的末尾位置。而第三个参数compare则是一个可选的比较函数,用于指定排序规则,如果不指定,则默认按照升序排列。

以从大到小排序为例,我们需要自定义一个比较函数来实现排序规则。比较函数的定义如下:


bool cmp(int a, int b)

  return a > b;

该函数返回值为bool类型,表示a是否大于b。当返回值为true时,表示a大于b,需要进行交换,从而实现从大到小排序。

接着,我们可以使用以上定义好的比较函数进行排序。示例如下:


int arr[] = 5;

int n = sizeof(arr) / sizeof(int);

sort(arr, arr + n, cmp);

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

  cout << arr[i] << " ";

}

以上代码将输出:


10 8 5 4 2

其中,arr数组代表待排序的一组数据,n表示数据的长度。sort()函数的第一个参数为数组的起始位置,第二个参数为末尾位置,第三个参数为比较函数cmp。最后,通过for循环将排好序的数据进行输出。

除此之外,我们还可以选择使用手动排序方法进行从大到小排序。手动排序的思路就是遍历待排序数组,每次找出当前数组中最大的数,将其放在当前数组的最前面,然后将剩下的元素进行递归处理,直到整个数组排好序为止。

示例代码如下:


#include<iostream>

using namespace std;

void sort(int arr[], int begin, int end){

  if(begin >= end) return;

  int max_idx = begin; // 当前数组中最大元素的位置

  for(int i = begin; i < end; i++){

    if(arr[i] > arr[max_idx])

      max_idx = i;

    

  }

  swap(arr[max_idx], arr[begin]); // 将最大元素放在数组开头

  sort(arr, begin+1, end); // 递归处理剩下的元素

}

int main(){

  int arr[] = 10;

  int n = sizeof(arr) / sizeof(int);

  sort(arr, 0, n);

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

    cout << arr[i] << " ";

  }

  return 0;

}

以上代码将输出:


10 8 5 4 2

其中,sort()函数代表手动排序的实现,begin表示当前数组的起始位置,end表示数组的末尾位置。在每一次遍历中,都会找到当前数组中最大的数,并将其放在开头,再对剩下的元素进行递归处理。最后,通过for循环将排好序的数据进行输出。

综上所述,从大到小排序是编程中常见的操作之一,我们可以选择使用C++ STL标准模板库的sort()函数来进行实现,也可以选择手动排序的方式来实现。无论哪种方式,都需要定义一个比较函数,来指定排序规则。希望通过本文的介绍,能够对从大到小排序有更全面的认识。

  
  

评论区

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