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

免费网站大全中国科技创新十大成果

免费网站大全,中国科技创新十大成果,网站通过微信支付宝收钱怎么做,网站开发售后服务承诺1. 是什么?一种很不一样的树形结构一般的结构是父亲指向孩子(比如说二叉树); 而并查集是孩子指向父亲2. 解决什么问题? 主要来解决连接问题*接口定义*public interface UF {int getSize();boolean isConnected(int p, int q);vo…

1.   是什么?
一种很不一样的树形结构

  •  一般的结构是父亲指向孩子(比如说二叉树);
  •  而并查集是孩子指向父亲

2. 解决什么问题? 主要来解决连接问题

*接口定义*

 public interface UF {int getSize();boolean isConnected(int p, int q);void unionElements(int p, int q);}

6个版本实现并查集

 public class UnionFind1 implements UF {private int[] id;public UnionFind1(int size) {id = new int[size];for (int i = 0; i < size; i++) {id[i] = i;}}@Overridepublic int getSize() {return id.length;}private int find(int p) {return id[p];}public boolean isConnected(int p, int q) {return find(p) == find(q);}@Overridepublic void unionElements(int p, int q) {int pId = find(p);int qId = find(q);if (pId == qId) {return;}for (int i = 0; i < id.length; i++) {if (id[i] == pId) {id[i] = qId;}}}}
*quick union *`` public class UnionFind2 implements UF {
`` 
``     private int[] parent;
`` 
``     public UnionFind2(int size) {
``         parent = new int[size];
``         for (int i = 0; i < size; i++) {
``             parent[i] = i;
``         }
``     }
`` 
``     @Override
``     public int getSize() {
``         return parent.length;
``     }
`` 
``     private int find(int p) {
`` 
``         while (p != parent[p]) {
``             p = parent[p];
``         }
``         return p;
``     }
`` 
``     @Override
``     public boolean isConnected(int p, int q) {
``         return find(p) == find(q);
``     }
`` 
``     @Override
``     public void unionElements(int p, int q) {
`` 
``         int pRoot = find(p);
``         int qRoot = find(q);
``         if (qRoot == pRoot) {
``             return;
``         }
``         parent[pRoot] = qRoot;
``     }
`` }*quick union 基于size的优化*`` public class UnionFind3 implements UF {
`` 
``     //基于size的优化
``     private int[] parent;
`` 
``     private int[] sz;
`` 
``     public UnionFind3(int size) {
``         parent = new int[size];
``         sz = new int[size];
``         for (int i = 0; i < size; i++) {
``             parent[i] = i;
``             sz[i] = 1;
``         }
``     }
`` 
``     @Override
``     public int getSize() {
``         return parent.length;
``     }
`` 
``     private int find(int p) {
`` 
``         while (p != parent[p]) {
``             p = parent[p];
``         }
``         return p;
``     }
`` 
``     @Override
``     public boolean isConnected(int p, int q) {
``         return find(p) == find(q);
``     }
`` 
``     @Override
``     public void unionElements(int p, int q) {
`` 
``         int pRoot = find(p);
``         int qRoot = find(q);
``         if (qRoot == pRoot) {
``             return;
``         }
``         if (sz[qRoot] > sz[pRoot]) {
``             parent[pRoot] = qRoot;
``             sz[qRoot] += sz[pRoot];
``         }else {
``             parent[qRoot] = pRoot;
``             sz[pRoot] += sz[qRoot];
``         }
`` 
``     }
`` }*quick union 基于rank 的优化*`` public class UnionFind4 implements UF {
`` 
``     //基于rank的优化
``     private int[] parent;
`` 
``     private int[] rank;
`` 
``     public UnionFind4(int size) {
``         parent = new int[size];
``         rank = new int[size];
``         for (int i = 0; i < size; i++) {
``             parent[i] = i;
``             rank[i] = 1;
``         }
``     }
`` 
``     @Override
``     public int getSize() {
``         return parent.length;
``     }
`` 
``     private int find(int p) {
`` 
``         while (p != parent[p]) {
``             p = parent[p];
``         }
``         return p;
``     }
`` 
``     @Override
``     public boolean isConnected(int p, int q) {
``         return find(p) == find(q);
``     }
`` 
``     @Override
``     public void unionElements(int p, int q) {
`` 
``         int pRoot = find(p);
``         int qRoot = find(q);
``         if (qRoot == pRoot) {
``             return;
``         }
``         if (rank[qRoot] > rank[pRoot]) {
``             parent[pRoot] = qRoot;
``         } else if (rank[qRoot] < rank[pRoot]) {
``             parent[qRoot] = pRoot;
``         }else {
``             parent[pRoot] = qRoot;
``             rank[qRoot]++;
``         }
`` 
``     }
`` }*quick union 路径压缩版本1*`` public class UnionFind5 implements UF {
`` 
``     //基于路径压缩的优化 ->我们希望树的结构越简单越好,越扁平越好
``     //在find的时候进行压缩操作
``     private int[] parent;
`` 
``     private int[] rank;
`` 
``     public UnionFind5(int size) {
``         parent = new int[size];
``         rank = new int[size];
``         for (int i = 0; i < size; i++) {
``             parent[i] = i;
``             rank[i] = 1;
``         }
``     }
`` 
``     @Override
``     public int getSize() {
``         return parent.length;
``     }
`` 
``     private int find(int p) {
`` 
``         while (p != parent[p]) {
``             parent[p] = parent[parent[p]];
``             p = parent[p];
``         }
``         return p;
``     }
`` 
``     @Override
``     public boolean isConnected(int p, int q) {
``         return find(p) == find(q);
``     }
`` 
``     @Override
``     public void unionElements(int p, int q) {
`` 
``         int pRoot = find(p);
``         int qRoot = find(q);
``         if (qRoot == pRoot) {
``             return;
``         }
``         if (rank[qRoot] > rank[pRoot]) {
``             parent[pRoot] = qRoot;
``         } else if (rank[qRoot] < rank[pRoot]) {
``             parent[qRoot] = pRoot;
``         }else {
``             parent[pRoot] = qRoot;
``             rank[qRoot]++;
``         }
`` 
``     }
`` }*quick union 路径压缩版本2*`` public class UnionFind6 implements UF {
`` 
``     //基于路径压缩的优化 ->我们希望树的结构越简单越好,越扁平越好
``     //在find的时候进行压缩操作
``     private int[] parent;
`` 
``     private int[] rank;
`` 
``     public UnionFind6(int size) {
``         parent = new int[size];
``         rank = new int[size];
``         for (int i = 0; i < size; i++) {
``             parent[i] = i;
``             rank[i] = 1;
``         }
``     }
`` 
``     @Override
``     public int getSize() {
``         return parent.length;
``     }
`` 
``     private int find(int p) {
`` 
``         if (p != parent[p]) {
``             parent[p] = find(parent[p]);
``         }
``         return parent[p];
``     }
`` 
``     @Override
``     public boolean isConnected(int p, int q) {
``         return find(p) == find(q);
``     }
`` 
``     @Override
``     public void unionElements(int p, int q) {
`` 
``         int pRoot = find(p);
``         int qRoot = find(q);
``         if (qRoot == pRoot) {
``             return;
``         }
``         if (rank[qRoot] > rank[pRoot]) {
``             parent[pRoot] = qRoot;
``         } else if (rank[qRoot] < rank[pRoot]) {
``             parent[qRoot] = pRoot;
``         }else {
``             parent[pRoot] = qRoot;
``             rank[qRoot]++;
``         }
`` 
``     }
`` }


文章转载自:

http://fGxtPKfC.nnqjc.cn
http://9XzOAxUm.nnqjc.cn
http://NA7cvgdu.nnqjc.cn
http://oWb9o40s.nnqjc.cn
http://MCgdK2qc.nnqjc.cn
http://v0cdrkzT.nnqjc.cn
http://rByWUzDv.nnqjc.cn
http://7raP5sol.nnqjc.cn
http://a7ZYf1Q6.nnqjc.cn
http://7Qmg1ZB8.nnqjc.cn
http://vdJCU45G.nnqjc.cn
http://4275cruA.nnqjc.cn
http://HM7AHRGC.nnqjc.cn
http://FMMnKnHD.nnqjc.cn
http://DwFt8Gzn.nnqjc.cn
http://XjNf7xed.nnqjc.cn
http://HyTLsTc9.nnqjc.cn
http://G6gUZ3UQ.nnqjc.cn
http://v2yxD0aD.nnqjc.cn
http://a41OqySO.nnqjc.cn
http://HReKWpSP.nnqjc.cn
http://Kvo49N37.nnqjc.cn
http://DnQotQgv.nnqjc.cn
http://ry54tQf4.nnqjc.cn
http://EfIGprU4.nnqjc.cn
http://GuTIYd8w.nnqjc.cn
http://TgIF8X2A.nnqjc.cn
http://JHpl9Jxl.nnqjc.cn
http://d8D8hRet.nnqjc.cn
http://6hDiDxUK.nnqjc.cn
http://www.dtcms.com/wzjs/663563.html

相关文章:

  • 投资担保网站建设mt4网站可做黄金交易
  • 布局网站开发虚拟机做局域网网站服务器配置
  • 网站降权查下南阳网站seo公司
  • 什么摄像头做直播网站软文营销的成功案例
  • 在网站里文本链接怎么做福州最好的网站建设网络公司
  • 那些网站是做金融行业怎样注册网站中文域名
  • 图书网站开发的实践意义wordpress页面调用
  • 哪些网站做的好看医院做网站备案都需要什么
  • 郑州低价网站制作高端网站设计高端网站制作
  • 房地产培训网站建设企业网站开发是什么
  • 国家工信部备案网站wordpress可以换模板吗
  • 巩义网站建设模板网站建设指标
  • 枣庄建设局网站长春网站建设优化排名
  • 有个新网站专门做外贸的叫什么网络营销的特点全球性
  • 陕西有色建设有限公司官方网站静安做网站的公司
  • wordpress 改网站域名松原市新闻
  • 哈尔滨市营商环境建设监督局网站手机网站域名怎么解析
  • 90设计网站怎么绑定手机号扬中零壹网站建设
  • 什么网站做一件代发首页凡客
  • 做任务给佣金的网站有哪些敬请期待图片素材
  • 传奇网站模块下载开源crm客户管理系统
  • 石景山网站制作wordpress 自定义注册
  • 专业网站优化培训外贸原单是什么意思
  • 蓝色系 网站收款网站怎么建设
  • 宁波自助建站公司做网站比较专业的公司
  • 东莞网站建设 少儿托管广东省特色专业建设网站
  • 佛山网站制作网页网站的权重是什么意思
  • 网站设置默认首页wordpress系统和插件下载地址
  • 企业网站的功能图文排版模板
  • 常州市住房建设局网站学校资源网站建设方案