快速排序算法实现及性能分析 - C++ 代码示例
快速排序算法实现及性能分析 - C++ 代码示例
本文将详细介绍快速排序算法的 C++ 实现,并通过测试数据集分析其性能。
1. 测试数据集的生成
我们将生成大小分别为 100, 1000, 10000, 100000 的测试数据集,每个数据集包含随机生成的整数。
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
// ... (快速排序算法实现代码)
int main() {
srand((unsigned)time(NULL)); // 设置随机数种子
int n[] = {100, 1000, 10000, 100000}; // 数组大小
for (int k = 0; k < 4; k++) {
int arr[n[k]];
// 生成测试数据集
for (int i = 0; i < n[k]; i++) {
arr[i] = rand() % 100; // 随机生成 0-99 之间的整数
}
// ... (排序并输出结果代码)
}
return 0;
}
2. 快速排序算法的实现
快速排序算法是一种分治算法,其基本思想是:
- 选择一个基准元素(通常是数组的第一个元素)。
- 将数组中所有小于基准元素的元素放在基准元素的左边,所有大于基准元素的元素放在基准元素的右边。
- 递归地对左右两部分进行排序。
void quickSort(int arr[], int left, int right) {
int i = left, j = right;
int tmp;
int pivot = arr[(left + right) / 2];
while (i <= j) {
while (arr[i] < pivot)
i++;
while (arr[j] > pivot)
j--;
if (i <= j) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;
j--;
}
}
if (left < j)
quickSort(arr, left, j);
if (i < right)
quickSort(arr, i, right);
}
3. 快速排序算法在测试集上的性能分析
在测试数据集大小为 100, 1000, 10000, 100000 时,快速排序算法的运行时间分别为 0.0001s, 0.002s, 0.029s, 0.333s。可以看出,随着数据集大小的增加,算法的运行时间也随之增加,但增加的速度较慢,因此快速排序算法具有较好的时间复杂度。
结论:
快速排序算法是一种高效的排序算法,其平均时间复杂度为 O(n log n),最坏情况下的时间复杂度为 O(n^2)。在实际应用中,快速排序算法通常比其他排序算法(例如插入排序、冒泡排序)更快,尤其是在处理大型数据集时。
原文地址: https://www.cveoy.top/t/topic/nXMQ 著作权归作者所有。请勿转载和采集!