输入n个整数,将它们从小到大排序后输出,并给出现在每个元素在原来序列中的位置。提示:可定义一个数组b[],存储元素初始位置。若用结构体更方便
时间: 2023-08-03 15:00:53 浏览: 243
有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数.
### 回答1:
可以使用结构体来存储每个元素的值和初始位置,然后根据元素值进行排序,并输出每个元素的初始位置。具体实现可以参考以下代码:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
struct Element {
int value;
int position;
};
bool cmp(Element a, Element b) {
return a.value < b.value;
}
int main() {
int n;
cin >> n;
Element a[n], b[n];
for (int i = 0; i < n; i++) {
cin >> a[i].value;
a[i].position = i + 1;
b[i] = a[i];
}
sort(a, a + n, cmp);
cout << "排序后的结果为:" << endl;
for (int i = 0; i < n; i++) {
cout << a[i].value << " ";
}
cout << endl;
cout << "每个元素在原来序列中的位置为:" << endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (b[j].position == a[i].position) {
cout << j + 1 << " ";
break;
}
}
}
cout << endl;
return 0;
}
```
其中,结构体`Element`包含两个成员变量,分别是元素的值和初始位置。在输入每个元素时,同时记录其初始位置,并将其存储到数组`b`中。然后,使用`sort`函数对数组`a`进行排序,排序的依据是元素的值。最后,遍历排序后的数组`a`,并在数组`b`中查找每个元素的初始位置,输出即可。
### 回答2:
如果输入n个整数,我会首先定义一个数组b[],用来存储元素的初始位置。然后,我将通过循环从键盘输入n个整数,并将它们存储在一个数组a[]中。
接下来,我会使用冒泡排序法对数组a[]进行从小到大排序。冒泡排序是一种简单但有效的排序算法,它通过多次比较和交换相邻元素的值来将元素按照一定的顺序排列。
在冒泡排序的过程中,每当发生一次交换,我就会更新数组b[]中对应元素的位置。这样,当排序完成后,我就可以通过遍历数组b[]来输出每个元素的初始位置。
下面是详细的步骤:
1. 定义一个整型数组b[],用来存储元素的初始位置,初始值为1到n的连续整数。
2. 通过循环从键盘依次输入n个整数,并将它们存储在一个整型数组a[]中。
3. 使用冒泡排序法对数组a[]进行排序。冒泡排序的基本思想是通过多次比较和交换相邻元素的值,将最大的元素逐渐“冒泡”到数组的末尾。
1. 外层循环控制需要比较的轮数,即需要比较n-1次。
2. 内层循环用于相邻元素的比较和交换。
3. 在交换元素的同时,更新数组b[]中对应元素的位置。
4. 排序完成后,通过遍历数组b[],输出每个元素在原来序列中的位置和数组a[]中的值。
这样,我就可以按照从小到大的顺序输出排序后的数组a[],并且给出每个元素在原来序列中的位置。如果考虑到代码的简洁性和可读性,也可以使用结构体来更方便地存储元素的值和初始位置。
### 回答3:
可以使用结构体来实现这个功能。首先,定义一个结构体来存储每个元素的值和初始位置。结构体可以包括两个成员变量:一个用来存储元素的值,另一个用来存储元素的初始位置。
然后,使用一个数组b[]来存储每个元素的初始位置。数组b[]的下标表示元素的值,数组b[]的值表示元素的初始位置。
接下来,输入n个整数并存储到一个数组a[]中。同时,将元素的初始位置信息存储到数组b[]中。
然后,使用冒泡排序或者快速排序等算法将数组a[]按照从小到大的顺序进行排序。
在排序的过程中,将每个元素的初始位置信息更新到数组b[]中。排序完成后,输出排序后的数组a[],并根据数组b[]输出每个元素在原来序列中的位置。
这样就可以实现将输入的n个整数从小到大排序并给出每个元素在原来序列中的位置的功能了。结构体在这个过程中帮助我们存储每个元素的初始位置信息,使得处理起来更方便。
阅读全文