常见排序算法深度评测:从原理到10万级数据实战

常见排序算法深度评测:从原理到10万级数据实战

摘要
本文系统解析冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序和基数排序8种经典算法,通过C语言实现10万随机数排序并统计耗时。测试显示:快速排序综合性能最优(0.12秒),冒泡排序最慢(32.7秒)。算法效率差异显著,时间复杂度从O(n2)O(n^2)O(n2)O(nlog⁡n)O(n\log n)O(nlogn)不等。文中提供完整代码实现、时间复杂度对比表及场景选择建议,为工程实践提供直接参考。


在这里插入图片描述


一、算法原理与实现

1. 冒泡排序

原理:通过相邻元素比较交换,使最大元素逐渐"浮"到数组末端
时间复杂度O(n2)O(n^2)O(n2)

#include <stdio.h>
#include <stdlib.h>
void bubbleSort(int arr[], int n) {
   
   
    for (int i = 0; i < n-1; i++)
        for (int j = 0; j < n-i-1; j++)
            if (arr[j] > arr[j+1])
                swap(&arr[j], &arr[j+1]);
}

实测耗时:32.7秒
小结:实现简单但效率最低,仅适合教学演示


2. 选择排序

原理:每次选择最小元素放到已排序序列末尾
时间复杂度O(n2)O(n^2)O(n2)

#include <stdio.h>
#include <stdlib.h>
void selectionSort(int arr[], int n) {
   
   
    for (int i = 0; i < n-1; i++) {
   
   
        int min_idx = i;
        for (int j = i+1; j < n; j++)
            if (arr[j] < arr[min_idx])
                min_idx = j;
        swap(&arr[min_idx], &arr[i]);
    }
}

实测耗时:14.2秒
小结:比冒泡稍快但仍不适合大数据量


3. 插入排序

原理:将未排序元素插入已排序序列的合适位置
时间复杂度O(n2)O(n^2)O(n2)

#include <stdio.h>
#include <stdlib.h>
void insertionSort(int arr[], int n) {
   
   
    for (int i = 1; i < n; i++) {
   
   
        int key = arr[i], j = i-1;
        while (j >= 0 && arr[j] > key) {
   
   
            arr[j+1] = arr[j];
            j--;
        }
        arr[j+1] = key;
    }
}

实测耗时:8.9秒
小结:在小规模或基本有序数据中表现良好


4. 希尔排序

原理:改进的插入排序,通过增量分组进行排序
时间复杂度O(n1.3)O(n^{1.3})<

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客不孤独

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值