快速排序算法实现及性能分析 - 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. 快速排序算法的实现

快速排序算法是一种分治算法,其基本思想是:

  1. 选择一个基准元素(通常是数组的第一个元素)。
  2. 将数组中所有小于基准元素的元素放在基准元素的左边,所有大于基准元素的元素放在基准元素的右边。
  3. 递归地对左右两部分进行排序。
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)。在实际应用中,快速排序算法通常比其他排序算法(例如插入排序、冒泡排序)更快,尤其是在处理大型数据集时。

快速排序算法实现及性能分析 - C++ 代码示例

原文地址: https://www.cveoy.top/t/topic/nXMQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录