第十章 某些算法的分析

一、线性结构相关时间复杂度分析

1、顺序表

访问O(1)、顺序查找O(n)、折半查找O(log2n)插入删除:O(n)


2、链表

访问O(n)、顺序查找O(n)、插入删除(事先直到插入删除的位置):O(1)

二、非线性结构相关的时间复杂度分析

1、树

遍历O(n)

2、图

(1)邻接矩阵:遍历O(n2)   Prim O(n2)

(2)邻接表:遍历O(n+e)

(3)Kruskal O(eloge)
(4)Dijkstra O(n2)    Floyd O(n3)

三、汉诺塔问题(递归、分治)

void hanoi(int n,char a,char b,char c)
{
    if(n==1)
        std::cout<<a<<"->"<<c<<std::endl;
    else
    {
        hanoi(n-1,a,c,b);
        std::cout<<a<<"->"<<c<<std::endl;
        hanoi(n-1,b,a,c);
    }
}
复杂度分析:写递归函数!T(n)=2T(n-1)+c=T(2n)
四、排序算法的性能分析
希尔排序:增量每次都除以二并向下取整,O(n2)。增量取2k+1




全部评论

相关推荐

点赞 评论 收藏
分享
Java抽象带篮子:难蚌,点进图片上面就是我的大头😆
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务