各种排序算法的时间复杂度和空间复杂度 您所在的位置:网站首页 数组排序时间复杂度最低 各种排序算法的时间复杂度和空间复杂度

各种排序算法的时间复杂度和空间复杂度

2024-07-17 17:05| 来源: 网络整理| 查看: 265

线性排序算法 计数排序

假设:有n个数的集合,而且n个数的范围都在0~k(k = O(n))之间。

运行时间:Θ(n+k)

image

待排序数组A如图2.1所示,需要辅助数组B(存储最后排序结果),数组C(存储元素的个数)。基于上述的假设,数组C的大小为k,C[i]表示数组A中元素i(0 =0; i--) 26: { 27: B[CountArr[A[i]]-1] = A[i]; 28: CountArr[A[i]]--; 29: } 30: }

9-12行和19-22行的运行时间Θ(k),14-17行和25-29行的运行时间为Θ(n),所以总的运行时间为Θ(2(n+k)) = Θ(n+k)。

基数排序

基数排序:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。

基数排序分为两种LSD和MSD。

LSD(Least significant digital):最低有效位优先,即从右向左开始排序。

MSD(Most significant digital):最高有效位优先,即从左往右开始排序。

以下是LSD方式的基数排序的伪代码

1: RadixSort(A,d) 2: for i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有