c++利用快速排序对5000个随机数进行排序
时间: 2024-11-16 09:20:35 浏览: 6
在C++中,你可以使用快速排序(Quick Sort)算法来对一组随机数进行排序。以下是使用递归实现的一个基本示例:
```cpp
#include <iostream>
#include <vector>
#include <cstdlib> // 包含rand()函数
// 用于交换两个元素
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
// 快速排序的分治策略
int partition(std::vector<int>& arr, int low, int high) {
int pivot = arr[high]; // 选取最后一个元素作为基准
int i = (low - 1); // 小于基准的索引
for (int j = low; j <= high - 1; j++) {
if (arr[j] < pivot) {
i++; // 如果当前元素小于基准,增加i的位置
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]); // 将基准放到正确位置
return (i + 1);
}
// 快速排序函数
void quickSort(std::vector<int>& arr, int low, int high) {
if (low < high) {
int pi = partition(arr, low, high);
// 对基准两侧的部分再进行排序
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
int main() {
const int size = 5000;
std::vector<int> randomArr(size);
// 使用随机生成器填充随机数
for (int& num : randomArr) {
num = rand() % 10000; // 生成0~9999之间的随机整数
}
// 排序前的数据展示(这里仅作演示)
std::cout << "Before sorting: ";
for (int num : randomArr) {
std::cout << num << " ";
}
std::cout << "\n";
// 调用快速排序函数
quickSort(randomArr, 0, size - 1);
// 排序后的数据展示
std::cout << "After sorting: ";
for (int num : randomArr) {
std::cout << num << " ";
}
std::cout << "\n";
return 0;
}
```
在这个例子中,我们首先创建一个包含5000个随机数的向量,然后使用`quickSort`函数对其进行排序。注意实际项目中,可能需要处理边界条件、空数组等情况,并考虑性能优化如使用更优的随机分区点选择策略。
阅读全文