使用c++ 指针完成元素次序 描述 输入一组数据,依次输出每个元素在升序排序后的次序,输入数据保证每个输入数据都是唯一的。 输入 第一行输入一个整数正整数N,第二行输入N个不相同的整数,每个数不超过整型范围。 输出 依次输出每个数的排名。
时间: 2024-02-12 20:06:26 浏览: 69
好的,我来给你提供一个用C++指针实现的代码。这里我使用动态分配的数组来存储输入的数据,代码如下:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n;
cin >> n;
int *nums = new int[n];
for(int i = 0; i < n; i++)
{
cin >> nums[i];
}
int *sorted_nums = new int[n];
copy(nums, nums + n, sorted_nums);
sort(sorted_nums, sorted_nums + n);
for(int i = 0; i < n; i++)
{
int *pos = find(sorted_nums, sorted_nums + n, nums[i]);
cout << distance(sorted_nums, pos) + 1 << endl;
}
delete[] nums;
delete[] sorted_nums;
return 0;
}
```
这段代码会先读入一个整数N,然后动态分配一个大小为N的数组nums,将输入的N个不同的整数存入数组nums中。接着,动态分配一个大小为N的数组sorted_nums,将nums中的元素复制一份存入sorted_nums中,并对sorted_nums进行升序排序。最后,遍历nums中的每个元素,使用find函数在sorted_nums中查找该元素,并使用distance函数计算该元素在sorted_nums中的下标加1,即为该元素的排名。最后别忘了释放动态分配的数组内存。
阅读全文