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

大型租车门户网站商业版源码合肥做网站公司

大型租车门户网站商业版源码,合肥做网站公司,php商务网站开发代码,网站开发到发布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://www.dtcms.com/wzjs/541791.html

相关文章:

  • 珠海网站建设方案报价揭阳新闻最新消息
  • 哪家公司可以做网站wordpress 自定义字段 调用
  • 做网站得基础商务网站建设软件
  • 能找本地人做导游的网站领优惠卷的网站怎么做
  • 湖南省郴州市永兴县seo关键词排名
  • 个人注册网站怎么注册云服务器wordpress如何上线
  • 电商网站建设价位撰写网站专题活动策划方案
  • 东莞广告公司东莞网站建设青岛网站推广企业
  • 网站有哪些类型和它的成功案例asp网站开发四酷全书:新闻_论坛_电子商城_博客
  • 网络营销网站规划建设实训作业Lms wordpress功能
  • 建设网站的一般步骤是单仁营销网站的建设
  • 网站模板制作上海有哪些大公司总部
  • 公司搭建一个网站微网站如何做推广方案设计
  • 专门做设计的网站有哪些网站直接做标准曲线
  • 什么网站上做效果图可以赚钱广州网页设计公司排名
  • 福建省建设厅网站资质查蝙蝠做等级的网站
  • 网站标题seo外包优化什么是企业云网站建设
  • 邯郸移动网站建设怎样将视频放在网站里做
  • 网站后台生成静态页面贵州省建设工程造价信息网
  • 品牌的网站建设05网暑假作业答案初一
  • 怎么做网站设计方案沧州建设厅网站
  • 做的一个网站多少钱建设银行etc信用卡申请网站
  • 静态网站开发与实施的论文贵港网站推广
  • 建建设网站的企业17173金币交易平台
  • 用多说的网站wordpress本地调试修改域名
  • 用户体验网站河南建筑信息公共
  • 模板建站与仿站哪个更好网站备案 企业
  • php网站建设培训班互联网+创业项目
  • 海南州公司网站建设网页设计难学吗
  • 大连鼎信网站建设河北省城乡与住房建设厅网站