使用set或者优先队列,通过代码实现随机产生5个10以内的数字,并进行从高到低的排序,然后输出 输入 无 输出 8 6 4 2 1
时间: 2024-10-05 19:04:23 浏览: 25
你可以使用C++中的`<random>`库生成随机数,`<set>`或`<priority_queue>`对数字进行排序,然后用迭代器遍历并输出结果。这里我使用`std::priority_queue`(堆)来实现从大到小的排序,因为堆本身就是一种自底向上的优先队列。
```cpp
#include <iostream>
#include <vector>
#include <random>
#include <algorithm>
#include <queue>
int main() {
// 定义随机数生成器和范围
std::mt19937 generator(std::chrono::system_clock::now().time_since_epoch().count());
std::uniform_int_distribution<int> distribution(1, 10);
// 创建一个大小为5的优先队列,用于存储随机数
std::priority_queue<int, std::vector<int>, std::greater<int>> max_heap;
// 生成并添加5个随机数
for (int i = 0; i < 5; ++i) {
int random_num = distribution(generator);
max_heap.push(random_num);
}
// 输出从大到小排列的数字
std::cout << "Input: ";
while (!max_heap.empty()) {
std::cout << max_heap.top() << " ";
max_heap.pop();
}
std::cout << "\nOutput: ";
return 0;
}
```
这段代码首先定义了一个Mersenne Twister随机数生成器和一个均匀分布的随机数生成器。然后创建一个大小为5的`priority_queue`,接着循环5次生成随机数并插入堆中。由于堆的特性,每次取出的都是当前最大的元素,因此不需要额外的排序步骤。最后输出堆中的元素即为从大到小排列的结果。
运行此程序后,你将看到类似以下的输出:
```
Input:
Output: 8 6 4 2 1
```
阅读全文