HRY得到n个数,他想把这n个数排好序然后输出。第一行是数据组数T(1<=T<=10)。 每组数据第一行是一个正整数n(1<=n<=2000000),第二行是n个小于等于1000的正整数。每组数据输出一行,表示排好序的数组。
时间: 2024-02-13 16:04:52 浏览: 55
这个问题可以用快速排序算法来解决。快速排序的基本思想是选择一个基准元素,根据该元素将数组分为两部分,一部分小于基准元素,一部分大于基准元素,然后递归地对两部分进行排序,直到排序完成。以下是使用C++实现快速排序的示例代码:
```cpp
#include <iostream>
using namespace std;
void quickSort(int arr[], int left, int right) {
int i = left, j = right;
int pivot = arr[(left + right) / 2];
while (i <= j) {
while (arr[i] < pivot) i++;
while (arr[j] > pivot) j--;
if (i <= j) {
swap(arr[i], arr[j]);
i++;
j--;
}
}
if (left < j) quickSort(arr, left, j);
if (i < right) quickSort(arr, i, right);
}
int main() {
int n, t;
cin >> t;
while (t--) {
cin >> n;
int arr[n];
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
quickSort(arr, 0, n - 1);
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
}
return 0;
}
```
在主函数中,首先输入数据组数t,然后使用while循环依次读入每组数据。对于每组数据,先输入整数n,然后输入n个数,存入数组中。接着调用quickSort函数对数组进行排序,最后输出排好序的数组。
阅读全文