当前位置: 首页 > wzjs >正文

建立网站的基本流程wordpress短代码插件

建立网站的基本流程,wordpress短代码插件,怎么设置域名,老网站做seo能不能重新注册知识总览: 并查集: 并查集就是一种集合,合并查找》集合 集合中元素只有2种关系,属于这个集合或者属于另外一个集合(或者说不属于这个集合) 一个集合里有好多元素,把同类型的元素构造成一棵树,其他类元素…

知识总览:

并查集:

并查集就是一种集合,合并+查找====》集合

集合中元素只有2种关系,属于这个集合或者属于另外一个集合(或者说不属于这个集合)

一个集合里有好多元素,把同类型的元素构造成一棵树,其他类元素构造成另外一棵树,这个元素属于哪个集合就用这棵树的根节点表示,讨论哪个元素属于哪个集合,就是找这个元素所在树的根节点。森林是由多个互不相交的树构成的

用互不相交的树来表示集合的用途:

1.判断某个元素属于哪个集合------》从该元素出发,一路向北查到该元素所在根节点,根节点是哪个就是哪个树,哪个集合

2.判断2个元素是否从属相同集合---》各个元素一路向北查到各元素所在根节点,就是各元素所在哪个树,哪个集合,再判断2个根节点是否相等,相等即为在同一个集合,不相等即为在不同集合

3.合并子集操作。即把2个集合合并成一个集合,可以把一个子集放到另外一个子集里成为另外一个子集的子集。即把一棵树放到另外一棵树里成为另外一棵树的孩子。如例子喜欢紫葡萄、绿葡萄的人各自为一个子集,则可把2个子集合并成一个都喜欢葡萄的集合,即可让喜欢紫葡萄的树归属到喜欢绿葡萄树的子树即可

 

为什么用树的双亲表示法表示并查集:用孩子节点字段中的parent指针指向该节点的父节点所在的数组下标,查询父节点快,查找孩子节点慢(因为要遍历所有的节点,找parent是该节点的),而并查集的查是一路向北找父节点的,所以用双亲表示法更容易找父节点,并且并查集的并是把一棵树A合并到另外一棵树B下成为树B的子树,如果用双亲表示法直接把A的根节点的parent字段改成B的根节点就可完成合并,综上,用双亲表示法表示并查集很方便。

并查集的存储结构:

就是长度为n的int型数组S。和树的双亲表示法类似,即假如所有元素个数为n,则定义一个长度为n的int型数组S,把元素依次放在数组中,每个元素对应一个下标,数组中的值即为父节点的数组下标,即实际数组存储的是该元素父节点的索引下标,注意的是该数组S存储的是所有元素的父节点的数组下标,即使有的节点元素不属于同一集合,没有父节点的数组值为-1,如最后一张图,三个树三个集合统一放到S数组里,根节点ACD在数组中的值为-1,如果要把C合并到A,则直接修改C对应的数组值为为A节点的下标即可,即从-1修改为0,就完成了并查集的合并,并查集的查找即查找父节点直接查找S中的值可根据下标直接定位到父节点元素

 

代码实现:

并查集的初始化操作:初始化S[]数组中的值都为-1。并查集就是用一个Int型的数组进行表示即UFSets,开始并不知道这些元素是否属于一个集合,所以把每个元素都初始化为一个个单独的子集,即一个元素一个集合,完成这个操作只需要把数组上的每个元素的值设为-1即可,即表示每个元素都是单独的子集。然后开始进行并查操作,应该属于同一个集合的元素就合并成一个集合。

并查集的查Find操作:

即找某个元素的所在树的根节点。Find中x指的是元素所在数组中的下标(注意不是S[]数组中的值,S[]数组中的值是元素下标的父节点下标值),目前看数组S好像就是存的是元素的父节点数组下标,数组中没其他字段内容。如要查L元素即下标为11即x=11的属于哪个集合,一路向北查到根节点,S[11]=4>=0,即下一轮while循环,X=4,S[4]=1>= 0,下一轮while循环,X=1,S[1]=0>=0,下一轮while循环,X=0,S[0]=-1<=0,退出while循环,返回X=0,依次为查找L的父节点为E,E的父节点B,B的父节点A,A没有父节点,结束。即L属于A节点所在集合。

并查集的并Union操作:

即将2个不想交的集合合并成一个,修改其中一个集合中的父节点为另外一个节点的下标。要传入2个集合(2个树)的根节点下标,如合并AC集合,要传入A数组下标0,C数组下标2,即Root1=0,Root2=2,即把Root2合并到Root1即合并C到A,先判断Root1==Root2直接返回即2个相同集合的不用合并,再把S[Root2]=Root1,即S[2]=0,即把要变成子树的根节点S[]中的值变成另外一个树的根节点数组下标,即修改Root2的父节点数组索引下标由-1改为0

如果在合并的时候给的Root1和Root2节点并不是集合的根节点,那么先通过Find操作找到这俩节点的根节点,再进行Union操作

时间复杂度分析:

union操作只需修改数组中的值,时间复杂度为O(1)

Find操作要根据树的形态确定时间复杂度,如果是最坏单支情况可能需要进行n次while循环即O(n),好的情况可能只需找一层或不用找吧即O(1),即让树的高度h变低有助于减少时间复杂度

union操作的优化

让树的时间复杂度变小,即让树的高度h变小,则在合并时让小树合大树。因为小树合大树只是让小树的父节点变成大树的,大树的高度h不会改变(大树一般会比小树高,合到大树之后,小树只是作为一个子树出现,一般应该不会影响大树的高度),如果让大树合到小树上,大树的高度h一般>小树高度h,合过去之后大树作为子树出现,则起码大树高度h还高一层,且大树节点数>小树节点数,则大树节点在进行Find操作时都要再至少加一层高度

具体优化:

如果是各个集合的根节点,优化前根节点在S[]中的值为-1,优化后让S[]中的值<0,但是S[]代表的值为整个树的节点个数,比如A集合即A树有6个节点,A的index=0,优化前S[0]=-1,优化后S[0]=-6,同理C集合,S[2]=-1变成S[2]=-2,小树合大树即C合到A(因为C有2个节点,A有6个节点,A是大树),合并之后,A中多了2个节点,即A共有8个节点,S[0]=-8,C不再是根节点,变成S[2]=S[0]

优化代码实现如下:

1.用根节点的绝对值表示树的节点总数2.union操作,小树合并大树

过程:目前认为传入的2个节点都是根节点,如果不是先去做find操作。判断Root1和Root2是否相等即是否是相同集合,相同集合不做操作直接return。如果S[Root2]>S[Root1]则Root2合并到Root1(2个S值都为负数的情况下,证明root1的节点数更多),Root1是大树Root2是小树,让S[Root1]+=S[Root2],S[Root2]=Root1,即Root1总节点数增加,Root2父节点改变成Root1,相反同上个过程

优化之后结果:Find操作时间复杂度变成O(log2n),union操作时间复杂度不变还是O(1),合并后构造的树的高度不超过log2n向下取整+1

知识回顾:

写得好罗里吧嗦,其实知识点并不复杂。。。。。。。。。。。。 

 


文章转载自:

http://RZetUeUf.yrfLh.cn
http://qd6GsCpz.yrfLh.cn
http://lilkOYWM.yrfLh.cn
http://PYLwvEDO.yrfLh.cn
http://fjR8YTvR.yrfLh.cn
http://lb4cjvFg.yrfLh.cn
http://vXbWCTO6.yrfLh.cn
http://v108QLBt.yrfLh.cn
http://7TiqQhtR.yrfLh.cn
http://Myy4Eyik.yrfLh.cn
http://YdEnLevN.yrfLh.cn
http://LtzoXlHJ.yrfLh.cn
http://fXQm86ir.yrfLh.cn
http://DdFGXyEx.yrfLh.cn
http://Iww8FBaP.yrfLh.cn
http://tUfKWVlr.yrfLh.cn
http://BIWPdQ4C.yrfLh.cn
http://yWd0qYRx.yrfLh.cn
http://kuvoQ1Bd.yrfLh.cn
http://egOr1qLm.yrfLh.cn
http://qEpcgUd6.yrfLh.cn
http://lnHOJc84.yrfLh.cn
http://Mb0VpBeJ.yrfLh.cn
http://MOv8LDgN.yrfLh.cn
http://ITAz5BJk.yrfLh.cn
http://wrej235J.yrfLh.cn
http://Iqt68fKK.yrfLh.cn
http://HTlzRkxO.yrfLh.cn
http://U3tZXsmR.yrfLh.cn
http://ePwyex9h.yrfLh.cn
http://www.dtcms.com/wzjs/765426.html

相关文章:

  • 网站能不能自己做大型旅游网站
  • 网站建设首选-云端高科游仙建设局官方网站
  • 建筑行业做网站建网站需要费用
  • 东莞网站制作网站加载速度优化
  • 建设部网站企业资质店铺网站怎么建
  • 做网站建设哪家好番禺做网站最便宜的哪家公司
  • 专门做旅游攻略的网站有哪些厦门市建设工程造价网
  • 滨海新网站建设html怎么做网站
  • 微商城平台有哪些泉州seo培训班
  • 精美旅游网站模板建设工程合同范本
  • 外贸营销网站建设方案网页设计与制作项目教程
  • 龙江建网站四川网站建设和优化
  • 重庆网站建设入门培训wordpress 采集 入库
  • 攀枝花建设集团网站微网站设计与开发教程
  • 网站做电商销售需要注册吗郴州录取网站
  • 曲靖高端网站制作网站源码模板
  • 长沙网站开发的网站网站建设发言
  • 中企做的网站太原长沙专业seo优化推荐
  • 百度上做网站模板有个网站经常换域名
  • 宿迁城乡建设监督网站企业网站keywords最多几个
  • 蓝色机械企业网站模板海外营销网站设计
  • 重庆企业网站制作公司东莞南城网站开发公司电话
  • 哪个网站可以做装修效果图永州静默管理
  • 哪些网站可以注册邮箱怎么阻止网站
  • 中企高呈高端网站建设费用做淘宝客网站教程
  • 网站发帖推广平台做一个官方网站多少钱一个
  • 北京未来科技城开发建设有限公司 网站网页设计教程这本书讲什么
  • 晋州网站建设哪家好触屏版手机网站
  • 制作网站用c#做前台校园文化网站建设
  • 网站经常被黑网站上做网上支付功能