算法第四版- 4.4 && 5.1

算法第四版- 4.4 && 5.1

4.4最短路径
5.1 字符串排序

1.Dijkstra && Floyd &&SPFA

Dijkstra漫画
Dijkstra算法进阶漫画
Floyd漫画
上面是漫画,下面是解析和代码实现,解析写的也很好。
三种算法解析以及其代码实现!!

2.拓扑排序

无环加权有向图的最短路径算法采用了拓扑排序

private void relax(EdgeWeightedDigraph G, int v) {
    for (DirectedEdge e : G.adj(v)) {
        int w = e.to();
        if (distTo[w] > distTo[v] + e.weight()) {
            distTo[w] = distTo[v] + e.weight();
            edgeTo[w] = e;
        }
    }
}

最主要的就是

AcyclicSP(EdgeWeightedDigraph G,int s)
{
/**/
    Topological top=new Topological(G);
     for(int v:top.order())  relax(G,v);
     /**/
}

3.关键路径

就是最长路径
按照拓扑顺序放松顶点,就能在和E+V成正比的时间内解决无环加权有向图的单点最短路径问题.同理,要解决无环加权有向图的最长路径问题,只需将原图中所有边的权重变为负值,再求最短路径即可.

4.套汇

套汇问题等价于加权有向图中的负权重环的检测问题.

总结:
在这里插入图片描述

5. 字符串排序

1) LSD(低位优先)

和基数排序类似,不过只能解决定长的字符串排序

2)MSD(高位优先)

在这里插入图片描述
先统计频率,比如a开头的有俩,b开头的有俩,s开头的有8个,t开头的有4个。
然后直接对数组切分,遇到字符串直接塞到对应的区间去。
所以是稳定的。

3)三向快速排序

快速排序就是归并+递归的感觉。
三向是分为等于,小于,大于三种。
在这里插入图片描述
三向字符串快速排序:根据键的首字母进行三向切分,仅在中间子数组的中的下一个字符继续递归排序.它能够很好地处理等值键,有较长公共前缀的键,取值范围较小的键和小数组.另外它不需要额外的空间.
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值