// 设置æµè¯æ°é var n = 100000; // æµè¯å¹¶æ¥é console.log("=======================æµè¯å¹¶æ¥éI============================"); // è½ç¶isConnectedåªéè¦O(1)çæ¶é´ï¼ä½ç±äºunionæä½éè¦O(n)æ¶é´ // æµè¯æ»ä½å¤æåº¦O(n^2); var UF = require('./UnionFindI'); var uf = new UF(n); console.time('UnionFindI'); for(let i = 0; i < n; i++) { let a = Math.floor(Math.random()*n); let b = Math.floor(Math.random()*n); uf.unionElements(a, b); } for(let i = 0; i < n; i++) { let a = Math.floor(Math.random()*n); let b = Math.floor(Math.random()*n); uf.isConnected(a, b); } console.timeEnd('UnionFindI'); // console.log(uf.data); // æµè¯å¹¶æ¥é console.log("=======================æµè¯å¹¶æ¥éII============================"); // æ¶é´æ§è½æ¯O(n*h)çï¼h为并æ¥éè¡¨è¾¾çæ çæå¤§é«åº¦ // è¿éä¸¥æ ¼è®²ï¼hålogn没æå ³ç³» var UF = require('./UnionFindII'); var uf = new UF(n); console.time('UnionFindII'); for(let i = 0; i < n; i++) { let a = Math.floor(Math.random()*n); let b = Math.floor(Math.random()*n); uf.unionElements(a, b); } for(let i = 0; i < n; i++) { let a = Math.floor(Math.random()*n); let b = Math.floor(Math.random()*n); uf.isConnected(a, b); } console.timeEnd('UnionFindII'); // console.log(uf.parent); // æµè¯å¹¶æ¥é console.log("=======================æµè¯å¹¶æ¥éIII============================"); // æ¶é´æ§è½æ¯O(n*h)çï¼h为并æ¥éè¡¨è¾¾çæ çæå¤§é«åº¦ // ä½ç±äºè½æ´é«æ¦çä¿è¯æ çå¹³è¡¡ï¼æ§è½æ´ä¼ var UF = require('./UnionFindIII'); var uf = new UF(n); console.time('UnionFindIII'); for(let i = 0; i < n; i++) { let a = Math.floor(Math.random()*n); let b = Math.floor(Math.random()*n); uf.unionElements(a, b); } for(let i = 0; i < n; i++) { let a = Math.floor(Math.random()*n); let b = Math.floor(Math.random()*n); uf.isConnected(a, b); } console.timeEnd('UnionFindIII'); // console.log(uf.parent); // æµè¯å¹¶æ¥é console.log("=======================æµè¯å¹¶æ¥éIV============================"); // æ¶é´æ§è½æ¯O(n*h)çï¼h为并æ¥éè¡¨è¾¾çæ çæå¤§é«åº¦ // ç¸å¯¹IIIè¿è¡äºä¼åï¼ä½ä¼åå°æ¹åºç°æ åµè¾å°ï¼æä»¥æ§è½æ´ä¼è¡¨ç°ä¸ææ¾ï¼ // çè³å¨ä¸äºæ°æ®ä¸æ§è½ä¼æ´å·® var UF = require('./UnionFindIV'); var uf = new UF(n); console.time('UnionFindIV'); for(let i = 0; i < n; i++) { let a = Math.floor(Math.random()*n); let b = Math.floor(Math.random()*n); uf.unionElements(a, b); } for(let i = 0; i < n; i++) { let a = Math.floor(Math.random()*n); let b = Math.floor(Math.random()*n); uf.isConnected(a, b); } console.timeEnd('UnionFindIV'); // console.log(uf.parent); // æµè¯å¹¶æ¥é console.log("=======================æµè¯å¹¶æ¥éV============================"); // æ¶é´æ§è½æ¯O(n*h)çï¼h为并æ¥éè¡¨è¾¾çæ çæå¤§é«åº¦ // ç¸å¯¹IIIè¿è¡äºä¼åï¼ä½ä¼åå°æ¹åºç°æ åµè¾å°ï¼æä»¥æ§è½æ´ä¼è¡¨ç°ä¸ææ¾ï¼ // çè³å¨ä¸äºæ°æ®ä¸æ§è½ä¼æ´å·® var UF = require('./UnionFindV'); var uf = new UF(n); console.time('UnionFindV'); for(let i = 0; i < n; i++) { let a = Math.floor(Math.random()*n); let b = Math.floor(Math.random()*n); uf.unionElements(a, b); } for(let i = 0; i < n; i++) { let a = Math.floor(Math.random()*n); let b = Math.floor(Math.random()*n); uf.isConnected(a, b); } console.timeEnd('UnionFindV'); // console.log(uf.parent);