已知A是有30个元素的整型数组,编写一个对A[I1]到A[I2](I1≤I2)之间的元素排序的函数(从大到小排序)。请调用上述函数先将A[5]至A[20]之间的元素排序,然后将A中的所有元素值输出。再调用上述函数对A[15]至A[30]之间的元素排序,最后再将A中30个元素值输出。
要求:1) 输入输出均由主函数实现。
2) 输出时每10个元素占1行。
参考GPT和自己的思路:
好的,根据你的要求,我可以给你一个代码实现:
#include <iostream>
using namespace std;
// 对A[i1]到A[i2]之间的元素从大到小排序
void sort(int A[], int i1, int i2) {
for (int i = i1; i < i2; i++) {
for (int j = i + 1; j <= i2; j++) {
if (A[i] < A[j]) {
swap(A[i], A[j]);
}
}
}
}
int main() {
int A[30] = { 5, 9, 2, 8, 6, 1, 4, 7, 3, 0, 10, 18, 12, 14, 11, 16, 15, 13, 19, 20, 17, 21, 22, 26, 25, 28, 27, 23, 24, 29 };
// 对A[5]到A[20]之间的元素排序,然后输出A的所有元素
sort(A, 5, 20);
for (int i = 0; i < 30; i++) {
cout << A[i] << " ";
if ((i + 1) % 10 == 0) {
cout << endl;
}
}
cout << endl;
// 对A[15]到A[30]之间的元素排序,然后输出A的所有元素
sort(A, 15, 29);
for (int i = 0; i < 30; i++) {
cout << A[i] << " ";
if ((i + 1) % 10 == 0) {
cout << endl;
}
}
cout << endl;
return 0;
}
在上面的代码中,sort函数是用来对指定区间进行排序的,主函数中先调用sort函数对A[5]至A[20]之间的元素进行排序,并输出A的所有元素;然后再调用sort函数对A[15]至A[30]之间的元素进行排序,并再次输出A的所有元素。而为了满足题目要求,我在输出A的所有元素时,每10个元素占1行。