21xrx.com
2024-12-27 16:04:30 Friday
登录
文章检索 我的文章 写文章
C++数组排序并返回下标
2023-07-05 07:27:58 深夜i     --     --
C++ 数组 排序 下标 返回

对于许多的C++程序员来说,数组排序是一个常见的任务。不仅仅是排序数组,有时候我们还需要知道每个元素排序后的下标。在这种情况下,以前我们需要编写并调试自己的代码,以便找出每个元素在排序后的位置。但是,现在我们可以使用现成的函数,实现数组排序和返回排序后的下标。

C++的标准库中有一个名为“sort()”的函数,可以帮助我们对数组进行排序。该函数需要两个参数:一个数组或容器,和一个比较函数。比较函数是可选的,如果忽略,则默认使用小于运算符(“<”),这将使函数对数组进行升序排序。

所以,我们可以编写以下程序对数组进行排序:


#include <iostream>

#include <algorithm>

using namespace std;

const int MAX_N = 100;

int a[MAX_N], index[MAX_N];

bool cmp(int i, int j) {

  return a[i] < a[j]; // 比较数组a中的元素

}

int main() {

  int n;

  cin >> n;

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

    cin >> a[i];

    index[i] = i; // 记录原始下标

  }

  sort(index, index + n, cmp); // 对记录下标的数组进行排序

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

    cout << "a[" << index[i] << "] = " << a[index[i]] << endl;

  }

  return 0;

}

这个程序中,我们先输入数组a的值,并用索引数组index来记录原始下标。随后,我们通过调用sort()函数对数组index进行排序,比较函数cmp()在排序过程中使用。

最后,我们遍历排序后的索引数组,输出每个元素的值和下标。由于我们将原始下标记录在该数组中,因此我们可以轻松地得到元素排序后的位置。例如,如果a [index [i]]的值为5,则a [index [i]]在排序后的数组中的位置将为i。

写一个数组排序程序并返回排序后的下标可能看起来比较麻烦,但是我们可以使用sort函数使其变得相当简单。现在你可以快乐地排序和找到排序后的下标。

  
  

评论区

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