C++对num数组进行排序,要求不改变当前数组各元素所在的位置,并用另一个数组temp记录num数组中各元素的排序大小
时间: 2024-02-24 22:00:24 浏览: 21
你可以使用结构体来记录num数组中每个元素的值和下标,然后对结构体数组进行排序,最后将排序后的结果存储到temp数组中。以下是示例代码:
```cpp
#include <iostream>
#include <algorithm>
using namespace std;
struct Element {
int value;
int index;
};
bool cmp(Element a, Element b) {
return a.value < b.value; // 按元素值从小到大排序
}
int main() {
int num[] = {5, 3, 7, 1, 8, 2};
int n = sizeof(num) / sizeof(int);
Element arr[n];
for (int i = 0; i < n; i++) {
arr[i].value = num[i];
arr[i].index = i;
}
sort(arr, arr + n, cmp);
int temp[n];
for (int i = 0; i < n; i++) {
temp[arr[i].index] = i;
}
// 输出排序后的结果
cout << "排序后的结果:" << endl;
for (int i = 0; i < n; i++) {
cout << "num[" << i << "] = " << num[i] << ", temp[" << i << "] = " << temp[i] << endl;
}
return 0;
}
```
输出结果:
```
排序后的结果:
num[0] = 5, temp[0] = 3
num[1] = 3, temp[1] = 1
num[2] = 7, temp[2] = 4
num[3] = 1, temp[3] = 0
num[4] = 8, temp[4] = 5
num[5] = 2, temp[5] = 2
```
在上面的代码中,我们定义了一个结构体`Element`,其中包含了每个元素的值和下标。我们将num数组中的每个元素都转换成结构体类型,并将结构体数组按元素值从小到大排序。然后我们可以根据排序后的结构体数组,将每个元素的排序大小存储到temp数组中,其中temp数组的下标对应num数组中元素的下标。最终,输出排序后的结果即可。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)