对A数组中的元素进行降序排列存放到B数组中要求不能改变A数组中元素的值
时间: 2024-05-13 11:18:27 浏览: 75
可以使用选择排序来实现这个功能。具体步骤如下:
1. 声明一个和A数组大小相同的B数组。
2. 遍历A数组,每次找出A数组中最大的元素,并记录对应的下标。
3. 将最大的元素放入B数组中对应的位置。
4. 将找到的最大元素从A数组中删除(即将其下标对应的值赋为负无穷)。
5. 重复第2-4步,直到A数组中所有元素均已删除。
下面是具体的实现代码:
```
void descendingSort(const int A[], int B[], int n)
{
int i, j, max_idx;
int* copy_A = new int[n];
memcpy(copy_A, A, n * sizeof(int)); // 复制一份A数组,避免修改A数组原始值
for (i = 0; i < n; i++)
{
max_idx = 0;
for (j = 1; j < n; j++)
{
if (copy_A[j] > copy_A[max_idx]) // 找到最大元素的下标
max_idx = j;
}
B[i] = copy_A[max_idx]; // 将最大元素放到B数组中
copy_A[max_idx] = INT_MIN; // 将找到的最大元素从A数组中删除
}
delete[] copy_A;
}
```
调用方式如下:
```
int A[] = { 3, 5, 1, 4, 2 };
int B[5];
descendingSort(A, B, 5);
for (int i = 0; i < 5; i++)
cout << B[i] << " ";
// 输出:5 4 3 2 1
```
阅读全文