时间复杂度为on的排序算法_排序—时间复杂度为O(n)的三种排序算法

这三种排序算法分别是桶排序、计数排序和基数排序,之所以它们的时间复杂度能到达O(n),是因为它们都是非基于比较的排序算法,不涉及元素之间的比较操作。

1 桶排序

1.1 原理

将待排数据元素分配到几个有序的桶中,然后对每个桶中的数据元素分别进行排序,每个桶中的数据元素有序后按桶的顺序将数据元素依次取出,这样整个序列就有序。

1.2 算法分析

1.2.1 时间复杂度

假设待排序列数据元素个数为n,桶的数量为m;那么平均每个桶中的数据元素个数为k = n / m,对每个桶中的数据元素进行快速排序,那么每个桶中的时间复杂度为O(k * logk),也就是(n / m) * O(log (n / m)),总的时间复杂度为O(n * log(n / m));当桶的个数m接近数据元素个数时,那么log(n / m)就是一个常数,此时时间复杂度为O(n)。

1.2.2 空间复杂度

实现过程中,所有桶大小之和等于待排序列数据元素个数;对桶内数据元素进行排序时,可以使用快速排序和归并排序,快速排序的时间复杂度为O(1),归并排序的时间复杂度为O(n);所以桶排序的时间复杂度为O(n)。

1.2.3 稳定性

桶排序的稳定性与桶内元素排序算法是否稳定有关,如果桶内排序算法是稳定的,那么桶排序也是稳定的,反之,则桶排序不是稳定的。

1.2.4 适用场景

1)待排数据元素在一定区间内分布均匀,可以容易的划分到桶中,而且各个桶中的数据元素个数均匀;

2)桶排序比较适用于外部排序,外部排序就

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值