用C++编写以下程序: 首先生成10000个int范围内的整数,然后对其按以下方法排序 快速排序
时间: 2024-10-21 16:09:59 浏览: 17
快速排序是一种高效的排序算法,其基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后分别对这两部分记录继续进行排序,直到整个序列有序。下面是一个简单的C++程序示例,用于生成10000个随机整数并使用快速排序对其进行排序:
```cpp
#include <iostream>
#include <vector>
#include <cstdlib> // 包含rand()和 srand() 函数
#include <ctime> // 包含时间函数
// 交换两个元素的值
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
// 快速排序函数,采用递归的方式实现
template<typename T>
void quickSort(T arr[], int left, int right) {
if (left < right) {
int pivotIndex = partition(arr, left, right); // 获取基准位置
quickSort(arr, left, pivotIndex - 1); // 对左侧子数组排序
quickSort(arr, pivotIndex + 1, right); // 对右侧子数组排序
}
}
// 划分子区间函数,返回基准的位置
int partition(std::vector<int>& arr, int low, int high) {
int pivotValue = arr[high];
int i = low - 1;
for (int j = low; j <= high - 1; j++) {
if (arr[j] < pivotValue) {
i++;
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]); // 将基准放到正确的位置
return i + 1;
}
int main() {
std::srand(std::time(0)); // 初始化随机数种子
const int n = 10000;
std::vector<int> numbers(n);
// 生成随机整数
for (int i = 0; i < n; i++) {
numbers[i] = rand() % 10000; // 生成0到9999之间的随机数
}
std::cout << "Before sorting:\n";
for (const auto& num : numbers) {
std::cout << num << " ";
}
std::cout << "\n";
// 使用快速排序对整数进行排序
quickSort(numbers.begin(), numbers.end() - 1);
std::cout << "After sorting:\n";
for (const auto& num : numbers) {
std::cout << num << " ";
}
std::cout << "\n";
return 0;
}
```
这个程序首先生成了一个包含10000个随机整数的向量,然后调用`quickSort()`函数进行快速排序,并打印排序前后的结果。
阅读全文