用C++编写以下程序: 首先生成10000个int范围内的整数,用快速排序将其排序。
时间: 2024-10-21 14:10:01 浏览: 22
在C++中,你可以使用随机数生成器生成10000个int范围内的整数,然后利用快速排序算法对它们进行排序。以下是实现这个功能的一个简单示例:
```cpp
#include <iostream>
#include <vector>
#include <random> // 需要包含随机数库
#include <algorithm> // 包含快速排序
// 快速排序函数
void quickSort(std::vector<int>& arr, int low, int high) {
if (low < high) {
int pivot = partition(arr, low, high);
quickSort(arr, low, pivot - 1); // 对左半部分递归排序
quickSort(arr, pivot + 1, high); // 对右半部分递归排序
}
}
// 分区函数
int partition(std::vector<int>& arr, int low, int high) {
int pivotValue = arr[high]; // 选择最右边作为基准
int i = low - 1;
for (int j = low; j < high; j++) {
if (arr[j] < pivotValue) {
i++; // 交换元素
std::swap(arr[i], arr[j]);
}
}
std::swap(arr[i + 1], arr[high]); // 将基准放回正确位置
return i + 1;
}
int main() {
const int size = 10000;
std::vector<int> numbers(size);
// 生成10000个随机数(范围在0到上边界-1之间)
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> dis(0, size - 1);
for (int i = 0; i < size; i++) {
numbers[i] = dis(gen);
}
// 使用快速排序对数组进行排序
quickSort(numbers, 0, numbers.size() - 1);
// 输出排序后的数组,这里为了简化只打印第一个和最后一个元素
std::cout << "Sorted array: [" << numbers[0] << ", ..., " << numbers[size - 1] << "]" << std::endl;
return 0;
}
```
运行此程序后,它会生成并排序一个包含10000个随机整数的向量。
阅读全文