-
- 1、Dijksra算法
-
三、多源最短路径
-
- 1、Floyd算法
-
四、拓扑排序
==========================================================================
struct EdgeType{
int adjvex;
int lowcost;
}shortEdge[MAX_VERTEX_SIZE];
int minLow(EdgeType shortEdge,int n){
int k=0,min0=0x3f3f3f3f;
for(int i=0;i<n;i++){
if(min0>shortEdge[i].lowcost&&shortEdge[i].lowcost!=0){
k=i;
min0=shortEdge[i].lowcost;
}
}
}
void Prim(int v){
for(int i=0;i<vertexNum;i++){
shortEdge[i].adjvex=v;
shortEdge[i].lowcost=edge[v][i];
}
//起点加入到集合中
shortEdge[v].lowcost=0;
for(int i=0;i<vertxNum;i++){
int k=minLow(shortEdge,vertexNum);
cout<<k;
cout<<vertex[shortEdge[k].adjvex]<<“,”<<vertex[k]<<endl;
//将查找的点加入到集合中
shortEdge[k].lowcost=0;
for(int j=0;j<vertexNum-1;j++){
if(shortEdge[k].lowcost>edge[k][j])
shortEdge[j]=edge[k][j];
shortEdge[j].adjvex=k;
}
}
}
const int MAX_VERTEX_SIZE=20;
const int MAX_EDGE_SIZE=10;
struct EdgeType{
int from,to,weight;
}edgeSet[MAX_EDGE_SIZE];
int findRoot(int parent,int v){
int t=v;
while(parent[t]>-1)
t=parent[t];
return t;
}
void Kruscal(int v){
//按权重排序
sortEdge(edgeSet,edgeNum);
for(i:vertexNum)
parent[i]=-1;
for(int i=0,num=0;num<vertexNum-1;i++){
vertex1=findRoot(parent,edgeSet[i].from);
vertex2=findRoot(parent,edgeSet[i].to);
if(vertex1!=vertex2){
parent[vertex1]=vertex2;
cout<<vertex[edgeSet[i].from]<<" “<<vertex[edgeSet[i].to]<<”:"<<edgeSet[i].weight<<endl;
num++;
}
}
}
===========================================================================
const int MAX_VERTX_SIZE=10;
int minLow(int dist[],int n){
int k=0,min0=0x3f3f3f3f;
for(int i=0;i<n;i++){
if(min0>dist[i]&&dist[i]!=0){
min0=dist[i];
k=i;
}
}
return k;
}
void Dijksra(int v){
int dist[MAX_VERTX_SIZE];
string path[MAX_VERTX_SIZE];
for(int i=0;i<vertexNum;i++){
dist[i]=edge[v][i];
if(dist[i]!=0x3f3f3f3f&&dist[i]!=0)
path[i]=vertex[v]+vertex[i];
}
for(int i=0;i<vertexNum-1;i++){
int k=minLow(dist,vertexNum);
for(int j=0;j<vertexNum;j++){
if(dist[i]>dist[k]+edge[k][i]){
dist[i]=dist[k]+edge[k][i];
path[i]=path[k]+vertex[i];
}
}
dist[k]=0;
}
}
===========================================================================
void Floyd{
int dist[MAX_VERTEX_SIZE][MAX_VERTEX_SIZE];
string path[MAX_VERTEX_SIZE][MAX_VERTEX_SIZE];
for(int i=0;i<vertexNum;i++){
for(int j=0;j<vertexNum;j++){
dist[i][j]=edge[i][j];
if(dist[i][j]!=0x3f3f3f3f&&i!=j)
path[i][j]=vertex[i]+vertex[j];
else
path[i][j]=“”;
}
}
for(int k=0;k<vertexNum;k++){
for(int i=0;i<vertexNum;i++){
for(int j=0;j<vertexNum;j++){
if(dist[i][j]>dist[i][k]+dist[k][j]){
dist[i][j]=dist[i][k]+dist[k][j];
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://img-blog.csdnimg.cn/img_convert/3c46ac7d0ad1deed5fc96bb4ee8f955c.jpeg)
2021年Java中高级面试必备知识点总结
在这个部分总结了2019年到目前为止Java常见面试问题,取其面试核心编写成这份文档笔记,从中分析面试官的心理,摸清面试官的“套路”,可以说搞定90%以上的Java中高级面试没一点难度。
本节总结的内容涵盖了:消息队列、Redis缓存、分库分表、读写分离、设计高并发系统、分布式系统、高可用系统、SpringCloud微服务架构等一系列互联网主流高级技术的知识点。
目录:
(上述只是一个整体目录大纲,每个点里面都有如下所示的详细内容,从面试问题——分析面试官心理——剖析面试题——完美解答的一个过程)
部分内容:
对于每一个做技术的来说,学习是不能停止的,小编把2019年到目前为止Java的核心知识提炼出来了,无论你现在是处于什么阶段,如你所见,这份文档的内容无论是对于你找面试工作还是提升技术广度深度都是完美的。
不想被后浪淘汰的话,赶紧搞起来吧,高清完整版一共是888页,需要的话可以点赞+关注
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
vqk2C1V-1712730668592)]
[外链图片转存中…(img-DR5E07rG-1712730668592)]
对于每一个做技术的来说,学习是不能停止的,小编把2019年到目前为止Java的核心知识提炼出来了,无论你现在是处于什么阶段,如你所见,这份文档的内容无论是对于你找面试工作还是提升技术广度深度都是完美的。
不想被后浪淘汰的话,赶紧搞起来吧,高清完整版一共是888页,需要的话可以点赞+关注
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!