From 682ecbb039d25cc443c23c3c135ac0c87fb72eb9 Mon Sep 17 00:00:00 2001 From: leeeeeelee Date: Thu, 6 Dec 2018 23:10:05 +0900 Subject: [PATCH 1/6] Red Black Tree --- .../com/github/pedrovgs/problem81/RBT.java | 184 ++++++++++++++++++ .../github/pedrovgs/problem81/TestRBT.java | 5 + 2 files changed, 189 insertions(+) create mode 100644 src/main/java/com/github/pedrovgs/problem81/RBT.java create mode 100644 src/test/java/com/github/pedrovgs/problem81/TestRBT.java diff --git a/src/main/java/com/github/pedrovgs/problem81/RBT.java b/src/main/java/com/github/pedrovgs/problem81/RBT.java new file mode 100644 index 00000000..551b9a45 --- /dev/null +++ b/src/main/java/com/github/pedrovgs/problem81/RBT.java @@ -0,0 +1,184 @@ +package upload; + +import java.util.ArrayList; + +public class RBT { + + int count=0; + private final boolean RED = false; + private final boolean BLACK = true; + + private final Node NIL = new Node(-999); + + public Node root = NIL; + + public class Node { + int data; + boolean color=BLACK; + Node left, right, parent; + + Node(int data) { + this.data = data; + this.left=NIL; + this.right=NIL; + this.parent=NIL; + } + } + + public void insert(int n) { + Node node = new Node(n); + Node temp = root; + if (root == NIL) { + root = node; + node.color = BLACK; + node.parent = NIL; + } else { + node.color = RED; + while (true) { + if(n>temp.data) { + if(temp.right!=NIL) { + temp = temp.right; + }else { + temp.right = node; + node.parent = temp; + break; + } + }else { + if(temp.left!=NIL) { + temp = temp.left; + }else { + temp.left = node; + node.parent = temp; + break; + } + } + } + makeRBT(node); + } + } + + private void makeRBT(Node node) { + while (node.parent.color == RED) { + Node s = NIL; + if (node.parent == node.parent.parent.right) { + s = node.parent.parent.left; + if (s != NIL && s.color == RED) {//case1 + s.color = BLACK; + node.parent.parent.color = RED; + node.parent.color=BLACK; + node = node.parent.parent; + continue; + } + if (node == node.parent.left) {//case2-1 + node = node.parent; + rotateRight(node);//->case2-2 + }//case2-2 + node.parent.color = BLACK; + node.parent.parent.color = RED; + rotateLeft(node.parent.parent); + } else { + s = node.parent.parent.right; + if (s != NIL && s.color == RED) {//case1 : parent and s is all red + s.color = BLACK; + node.parent.color=BLACK; + node.parent.parent.color = RED; + node = node.parent.parent; + continue; + } + if (node == node.parent.right) {//case2-1 + node = node.parent; + rotateLeft(node);//->case2-2 + }//case2-2 + node.parent.color = BLACK; + node.parent.parent.color = RED; + rotateRight(node.parent.parent); + } + } + root.color = BLACK;//root always black + } + + private void rotateLeft(Node node) { + if (node.parent == NIL) { + Node right = root.right; + root.right = right.left; + right.left.parent = root; + root.parent = right; + right.left = root; + right.parent = NIL; + root = right; + } else { + if (node == node.parent.right) { + node.parent.right = node.right; + } else { + node.parent.left = node.right; + } + node.right.parent = node.parent; + node.parent = node.right; + if (node.right.left != NIL) { + node.right.left.parent = node; + } + node.right = node.right.left; + node.parent.left = node; + } + } + + private void rotateRight(Node node) { + if (node.parent == NIL) { + Node left = root.left; + root.left = root.left.right; + left.right.parent = root; + root.parent = left; + left.right = root; + left.parent = NIL; + root = left; + } else { + if (node == node.parent.right) { + node.parent.right = node.left; + } else { + node.parent.left = node.left; + } + node.left.parent = node.parent; + node.parent = node.left; + if (node.left.right != NIL) { + node.left.right.parent = node; + } + node.left = node.left.right; + node.parent.right = node; + } + } + + public Node Search(Node x,int k) {//Ž + count++; + if(x==null || x.data==k) { + return x; + } + if(k>x.data) { + return Search(x.right,k); + }else { + return Search(x.left,k); + } + } + + public int getCount() { + return count; + } + + public void inorder(Node n) {//ȸ + if (n == NIL) { + return; + } + inorder(n.left); + System.out.print("data: "+n.data+((n.color==BLACK)?"| color: Red\n":"| color: Black\n")); + inorder(n.right); + } + + public void get_Sorted_List(Node n, ArrayList arr) { + if(n==NIL) return; + if(n.left !=null) + get_Sorted_List(n.left,arr); + arr.add(n.data); + if(n.right !=null) + get_Sorted_List(n.right,arr); + } + +} \ No newline at end of file diff --git a/src/test/java/com/github/pedrovgs/problem81/TestRBT.java b/src/test/java/com/github/pedrovgs/problem81/TestRBT.java new file mode 100644 index 00000000..6f5a91f4 --- /dev/null +++ b/src/test/java/com/github/pedrovgs/problem81/TestRBT.java @@ -0,0 +1,5 @@ +package upload; + +public class TestRBT { + +} From aeae40615b83d9afb2fa313ed99c86a9041129b2 Mon Sep 17 00:00:00 2001 From: leeeeeelee Date: Thu, 6 Dec 2018 23:27:46 +0900 Subject: [PATCH 2/6] Red Black Tree+ --- .../com/github/pedrovgs/problem81/RBT.java | Bin 5160 -> 12414 bytes .../github/pedrovgs/problem81/TestRBT.java | Bin 43 -> 1974 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/github/pedrovgs/problem81/RBT.java b/src/main/java/com/github/pedrovgs/problem81/RBT.java index 551b9a45c1fa72e3c5ad870b638a6df78bce11d8..6449ee7356330d3c809d05d8f7709265160ae91f 100644 GIT binary patch literal 12414 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 Dz!PFH literal 5160 zcmcgw%WmT~6kW?-!O3DEBaYo>m!wKDnRYQ~;6>79fdOMNiE2eMC^-*I{5`You0UI0 zx+u_1zoE%BB%#C*O(>qhyp6RVxX@b*W?}&c6OiWa3hmje1J$5HuTpmc|C{a|92|_< zGh1-7q^j$>1zoThDsVNV_JIts1gt5Stz>n4W6N07Wvw&HvKNwdsV>`z(8bj?{H&x_ z6=H_A_)w14?HG{b*ZgmLT{KgS2TA&2QBG3yo^=ISV-iuwEi%r-7j6Uv-*9rKske2J zL)neeZHj4DHphgDs}OMq?aDxniI768ZdRaxNcXrDmm+2C34H6)W^dYpzIz)K;+rWU z4K4$$J2{sI3LYvOp@3llzMelIq95(dh6|>vij5;5 zO-Ol^;G{WTM8-UsG860%u{3m=phL&jDi3>R12y6mO`UlCS~Ow8v)Mv6>T?f5G=!(q zjmen^$hnH!@k*U?-;?}-`fx2-q?r(iQ8$5Y-EWwSXnX{9$AA}D>%PXDA;A9 zao~&!!Wdnpw-J$8>q7zykVs!bLvd)fVj-(sG@@vPEK8wP?je?7Qcu#8GzQp(2LW_5 z(0mTN&fo>aB;7bI6SJ>l4)_p8%q@Su?J8g?;*)YqHUa(^AZYmbXd54so{fC;Kx=%G z0iXaugp8ivvv7uk;&V7;V#kAirtw^2mo<~lY(|F_S>DNqMqHF|ZYIOnitpeuk1hIk ztuT4vk`XyKkSVnaFrkbhbI`v>C0rV&!)3dF-$e}0Y1j*L#n@V3e$RV1CZU+PbKo7y ztpB0o!9wsXYrB3W9xEt2@K21Q|M=+*0%1;`2L#S{;FGoI2b%VAdQj;dBj5*j1b&3B z7GWT+c5XVWIq(;AY&W?Eo>{lNhdfXA5|Hm0HeIb5E z$c?ias!SsUAdnc@j-=?buLe=|r(hVa_X1!H%}Lz3-!=o}7Ng;lbR39M)RH1RSWqP) zFFZbzhHde%l4vx~0or)>&(4EizC#}$WJlon?~p)TY~j>gZm2nShE=0Bxuozxi&5Z5 zk4!^YX^cNk(k2^TYPJ6??9T9?qVA{?Ncj@3daSil`y+bO$d~4#m!HML_PRX~lbc z#)r4@mphMee+9QXhvH1--&H$@{fiUa=;77aiO`4U8RYZ~0=Dh63Ib;D&*3^v1b-JRMO@2XZ^DSa%Y)(k9OIAnZ}V5=uaaG@{($cr%&A@t4~6ZC|ghTo~obEp;p UpjYU-o1`cFP+is$6gJxY3r74xPXGV_ diff --git a/src/test/java/com/github/pedrovgs/problem81/TestRBT.java b/src/test/java/com/github/pedrovgs/problem81/TestRBT.java index 6f5a91f4e2ceb1497b08657b2936264bdc6b1b72..6c451083ef294de1f1a2e2363ef36511b22b96ab 100644 GIT binary patch literal 1974 zcmcJQTTc^F6ovOICjN($KB2*>8Xt_lfQm{a*3b&!ae4u&#bRelMdOe4H~6l8Ywu2{ zMG3r^Nqa7{FKe&8&Y9o8ns(Q2+bv6s$)4NT&g{Y_Hnd|qv68)YcJDAgwEOnJ9x;1o z1M6cmX1P2drP&PdjDym3iBKu-_w&*4ZLYoo{#HU0~D4XNpIk`Gk4tp2@br zl+WWNTlLw%Zr|+-VvX?@(hRIZUPWkJ@@i1g(*>SH#bYujkmt-3QN~{T)PyUL44Ef8 zBFo742KL1(KXc2WXYS#53fd7?IXhw|*^HHt)D^APP&1S4@Dh@-b@9!KpvrQ7%Ap=5 z#-l4^%C=loSTnAkmiRxhCeO^D4BMLFjJOlJ-}EY?w_>4SXV-R6!?wMpx7&7a&U6*M z8k4;Ttyn6Yvk9}$@H-@Kbh+#Jl{L8PfuK9*b;Nw;)ky<6NaPiMCD_uOiy8akRm>cl zbWk`WCEmIF)Oh+>71+w73leGdDz&ZlM%mQ&t0IKr)azsol-g$8;lIK7%-33NEIN_w zfcG7HZ7o>pV0D1i9?ur6c6hh#FfW(ZfT%Q#YpGH^n%{=NzjE z`_ZZ7UK3D=+3M7aWBK-%n9?bdmGrMZi)-2a>yB8(T36Ndc%kl(3siAVGtdQJQ&f>T zuDI9Ec~kg~Zn;qAsXgZYi(5m=3LeF&ZpoWQlt$$dT;wn&hC<0FRGZQLWs9x9ECRv* z$*!8O%ip1!I!iSZ`i3ljMKB%)$5+~C=G>Pt4w>G zB%KuLStnO2kq&N(G}$-Lxn^s4CEMf#g(k(jzBbb2GK%XWOV Date: Thu, 6 Dec 2018 23:39:09 +0900 Subject: [PATCH 3/6] Red Black Tree, change UTF-8 --- .../com/github/pedrovgs/problem81/RBT.java | Bin 12414 -> 6006 bytes .../github/pedrovgs/problem81/TestRBT.java | Bin 1974 -> 963 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/github/pedrovgs/problem81/RBT.java b/src/main/java/com/github/pedrovgs/problem81/RBT.java index 6449ee7356330d3c809d05d8f7709265160ae91f..491f8da3ec3677885c23322b9c1c01c88736b666 100644 GIT binary patch literal 6006 zcmcgw!EW0|5Is|0G0~xrW0^{f9vZuHD?4r~#E=WiNf4kwu##31Yl>u-q-7`Z$MhR| z?4gHzP=BE_v%4ghq+dT)S`4OgH{)pyl`O!xw@;jsHR4yQo7E(dBmM}^LTG*LByp<{q z;t2NrXV4>qu5s$_98!qeIERh6g(%J-PbJ0(QdkC|1bH);Nd`d#^LUelfr#c3wn4V$ zbxagO0`EOi%X^ zuyJ@3g)&V+$=~xpVY0JZ5D5aBiy6WU#TH@(Vx=U`WibKXsvrxZRUguLnQeuVgmMw2 znF?lk=I~|m0L;2-fQ*RoEv$>YNfc#(Fau&zE||8dB)W@Q!4l``cbdp~ungvy zTC~c=O2R6>mMX%GAdzYlq*T!q0WJtq7;J(}WIR;rpi-Yf2Wh^dI9N!3g_!c0pOC(; zSE-+<7-`&m_x!NaL3FXoTFp|NKma0K#YpaY<4^U#$PS?U;3=!}Rd6ktKA{vUYng{3 zi6KBCuTYK5f!v_3Q7Id#5Eli9A~Y3|M~IAhjBaQeL}{?#I?^adwq5X}$g?$a_h8Em ziVS}f*TT=UAoNFs@eHMb_>+8ws)Bhauvizzm+-0Mbv(q4DDo&9KEsZ|Pojcrflav# zA`!wYjzfuBxj20ZLs*J1m0vSEJ{z69M#D_y#;zsiBwk3EjL*<6l3Spky}cJNUQo;8 zM|)_nY^q}H-XVE34Rkha_K6)S0_C(2nb77mV$+z%VXTIXvYce^P%g7R@HW+l1e+=% z&d8TOjM0YOLFV+Z{!5#RPwOE_cUhX}S&BX^60puZ#Y^5Zr*XKGcbcF(4bBwxIt~^j zBB`<-!Hg_MkCTgt@e13Kp_+iOK_)i|8W7VZFToOentLYShP3ESStxetLz6V(Gt(Hd z#&t2TQ$quXl{=8Auo}NkJQSk4+ICIbd5;uVN9YC1UUWpcad{fkG|#hKgD1pu)5bI0 zl!os5o_E)R*^)%xr6<*(L08q3Q!S_=M|ZKR?Mz8=>2UXjb+^+Ayo8R5*^2 z)+J9f)M=F{Fw{EnwG!+XtF#`}qkt7(Yuv1vT_}Yo+;#BHH;~o=4+e9Q%I6M+AtfoHfE}ow#>F{v4$%v2BRbE&{hhK?+g>J zD$xX}vz&wiSGzfUM!eb#GxA2(kFy;}cuga4x8r;}fie*lo?g84UQaBEqe>O<@+|3j;g0?f4a5 zCT*L(-75?(+A>Athw65j^ARov7!G3VlugJ$GxiaCzFPI=+Y~oy8T~KrEtY=Nu z9Fmu>m6#^n)myruo@twYDxeJ-z1ft(Z8s2}j%VJhC#3$V6l%Wi@&7k{dcD4)Bs`Dr zO?Gz=@n3wCycrH7x(xdK8E*J}b2v11o|0LvBDf*TJ8gY+q>XeWYhjkU(HQ$z__!#&PUvcI!TNdi=-Q%Bk*L1-?Tf_%vn2v}h+-FA^OZQ9mkor8 Hb?*KJgX>x) literal 12414 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 Dz!PFH diff --git a/src/test/java/com/github/pedrovgs/problem81/TestRBT.java b/src/test/java/com/github/pedrovgs/problem81/TestRBT.java index 6c451083ef294de1f1a2e2363ef36511b22b96ab..474291785a400d1a2d328ea63cf5a688f7e47663 100644 GIT binary patch literal 963 zcmb7DL2}bT5Ije(=<>-<87WC|pvWbPV?ag9rYt9^9M{rVT99_d?kb9t%42u~M-CkF zAilt?qd*8;IBKSQw!3HatfZTeNuGD=+m>>)DklS165>WM;;}QvITT{o2!DkF5#mD_jvDP9RK`x$!W1j7Xrnho^&DGL#CG2Z`88D+)JutEuC=N((gNXvY#m6m_PYB zyvVR%P3kJjjosC-=PqFwRQkyV1T^!UZ`lCyQBa*OA3d>^;L&JJ)i=k$!s l3H^lUSQO-**M_4lo9W=obFEQO)PbKI@{hCQ=iUW(!B6^)Mt}eS literal 1974 zcmcJQTTc^F6ovOICjN($KB2*>8Xt_lfQm{a*3b&!ae4u&#bRelMdOe4H~6l8Ywu2{ zMG3r^Nqa7{FKe&8&Y9o8ns(Q2+bv6s$)4NT&g{Y_Hnd|qv68)YcJDAgwEOnJ9x;1o z1M6cmX1P2drP&PdjDym3iBKu-_w&*4ZLYoo{#HU0~D4XNpIk`Gk4tp2@br zl+WWNTlLw%Zr|+-VvX?@(hRIZUPWkJ@@i1g(*>SH#bYujkmt-3QN~{T)PyUL44Ef8 zBFo742KL1(KXc2WXYS#53fd7?IXhw|*^HHt)D^APP&1S4@Dh@-b@9!KpvrQ7%Ap=5 z#-l4^%C=loSTnAkmiRxhCeO^D4BMLFjJOlJ-}EY?w_>4SXV-R6!?wMpx7&7a&U6*M z8k4;Ttyn6Yvk9}$@H-@Kbh+#Jl{L8PfuK9*b;Nw;)ky<6NaPiMCD_uOiy8akRm>cl zbWk`WCEmIF)Oh+>71+w73leGdDz&ZlM%mQ&t0IKr)azsol-g$8;lIK7%-33NEIN_w zfcG7HZ7o>pV0D1i9?ur6c6hh#FfW(ZfT%Q#YpGH^n%{=NzjE z`_ZZ7UK3D=+3M7aWBK-%n9?bdmGrMZi)-2a>yB8(T36Ndc%kl(3siAVGtdQJQ&f>T zuDI9Ec~kg~Zn;qAsXgZYi(5m=3LeF&ZpoWQlt$$dT;wn&hC<0FRGZQLWs9x9ECRv* z$*!8O%ip1!I!iSZ`i3ljMKB%)$5+~C=G>Pt4w>G zB%KuLStnO2kq&N(G}$-Lxn^s4CEMf#g(k(jzBbb2GK%XWOV Date: Thu, 6 Dec 2018 23:49:58 +0900 Subject: [PATCH 4/6] change file --- src/main/java/com/github/pedrovgs/problem81/RBT.java | 2 +- src/test/java/com/github/pedrovgs/problem81/TestRBT.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/github/pedrovgs/problem81/RBT.java b/src/main/java/com/github/pedrovgs/problem81/RBT.java index 491f8da3..883b108b 100644 --- a/src/main/java/com/github/pedrovgs/problem81/RBT.java +++ b/src/main/java/com/github/pedrovgs/problem81/RBT.java @@ -1,4 +1,4 @@ -/* +/* * Copyright (C) 2014 Pedro Vicente Gómez Sánchez. * * Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/src/test/java/com/github/pedrovgs/problem81/TestRBT.java b/src/test/java/com/github/pedrovgs/problem81/TestRBT.java index 47429178..3dacc605 100644 --- a/src/test/java/com/github/pedrovgs/problem81/TestRBT.java +++ b/src/test/java/com/github/pedrovgs/problem81/TestRBT.java @@ -1,4 +1,4 @@ -/* +/* * Copyright (C) 2014 Pedro Vicente Gómez Sánchez. * * Licensed under the Apache License, Version 2.0 (the "License"); From 200f1c1cb69a7544eaa9249ff382da28ab822d77 Mon Sep 17 00:00:00 2001 From: leeeeeelee Date: Thu, 6 Dec 2018 23:57:43 +0900 Subject: [PATCH 5/6] I want Upload... --- .../com/github/pedrovgs/problem81/RBT.java | 50 ++++--------------- .../github/pedrovgs/problem81/TestRBT.java | 31 ++---------- 2 files changed, 12 insertions(+), 69 deletions(-) diff --git a/src/main/java/com/github/pedrovgs/problem81/RBT.java b/src/main/java/com/github/pedrovgs/problem81/RBT.java index 883b108b..5cdd27cc 100644 --- a/src/main/java/com/github/pedrovgs/problem81/RBT.java +++ b/src/main/java/com/github/pedrovgs/problem81/RBT.java @@ -1,32 +1,5 @@ -/* - * Copyright (C) 2014 Pedro Vicente Gómez Sánchez. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.github.pedrovgs.problem81; - -import com.github.pedrovgs.sortingalgorithm.SortingAlgorithm; - -/** - * Given an array full of integers implement a merge sort algorithm to sort the content inside - * the array. - * - * @author Pedro Vicente Gómez Sánchez. - */ - import java.util.ArrayList; - -public class RBT { + public class RBT { int count=0; private final boolean RED = false; @@ -40,16 +13,14 @@ public class Node { int data; boolean color=BLACK; Node left, right, parent; - - Node(int data) { + Node(int data) { this.data = data; this.left=NIL; this.right=NIL; this.parent=NIL; } } - - public void insert(int n) { + public void insert(int n) { Node node = new Node(n); Node temp = root; if (root == NIL) { @@ -80,8 +51,7 @@ public void insert(int n) { makeRBT(node); } } - - private void makeRBT(Node node) { + private void makeRBT(Node node) { while (node.parent.color == RED) { Node s = NIL; if (node.parent == node.parent.parent.right) { @@ -120,8 +90,7 @@ private void makeRBT(Node node) { } root.color = BLACK;//root always black } - - private void rotateLeft(Node node) { + private void rotateLeft(Node node) { if (node.parent == NIL) { Node right = root.right; root.right = right.left; @@ -145,8 +114,7 @@ private void rotateLeft(Node node) { node.parent.left = node; } } - - private void rotateRight(Node node) { + private void rotateRight(Node node) { if (node.parent == NIL) { Node left = root.left; root.left = root.left.right; @@ -171,7 +139,7 @@ private void rotateRight(Node node) { } } - public Node Search(Node x,int k) { + public Node Search(Node x,int k) {//Àç±ÍŽ»ö count++; if(x==null || x.data==k) { return x; @@ -187,7 +155,7 @@ public int getCount() { return count; } - public void inorder(Node n) { + public void inorder(Node n) {//ÁßÀ§¼øÈ¸ if (n == NIL) { return; } @@ -205,4 +173,4 @@ public void get_Sorted_List(Node n, ArrayList arr) { get_Sorted_List(n.right,arr); } -} \ No newline at end of file +} \ No newline at end of file diff --git a/src/test/java/com/github/pedrovgs/problem81/TestRBT.java b/src/test/java/com/github/pedrovgs/problem81/TestRBT.java index 3dacc605..97292a3e 100644 --- a/src/test/java/com/github/pedrovgs/problem81/TestRBT.java +++ b/src/test/java/com/github/pedrovgs/problem81/TestRBT.java @@ -1,28 +1,3 @@ -/* - * Copyright (C) 2014 Pedro Vicente Gómez Sánchez. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.github.pedrovgs.problem81; - -import com.github.pedrovgs.sortingalgorithm.SortingAlgorithm; -import com.github.pedrovgs.sortingalgorithms.SortingAlgorithmTest; - -/** - * @author jsroyal. - */ -public class TestRBT extends SortingAlgorithmTest { - @Override public SortingAlgorithm getSortingAlgorithm() { - return new RBT(); - } -} +public class TestRBT { + return new RBT(); + } From 3e9c85c9398fd33952a1cb2468260c0c14f57a51 Mon Sep 17 00:00:00 2001 From: leeeeeelee Date: Fri, 7 Dec 2018 00:11:35 +0900 Subject: [PATCH 6/6] modified file --- .../com/github/pedrovgs/problem81/RBT.java | 68 ++++++++++++++++--- .../github/pedrovgs/problem81/TestRBT.java | 31 ++++++++- 2 files changed, 87 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/github/pedrovgs/problem81/RBT.java b/src/main/java/com/github/pedrovgs/problem81/RBT.java index 5cdd27cc..f9892cd1 100644 --- a/src/main/java/com/github/pedrovgs/problem81/RBT.java +++ b/src/main/java/com/github/pedrovgs/problem81/RBT.java @@ -1,5 +1,50 @@ +/* + * Copyright (C) 2014 Pedro Vicente Gómez Sánchez. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.github.pedrovgs.problem81; + +import com.github.pedrovgs.sortingalgorithm.SortingAlgorithm; + +/** + * Given an array full of integers implement a quick sort algorithm to sort the content inside + * the array. + * + * @author jsroyal + */ + + /** + * Quicksort (sometimes called partition-exchange sort) is an efficient sorting algorithm, serving + * as a systematic method for placing the elements of an array in order. Developed by Tony Hoare + * in 1959 and published in 1961, it is still a commonly used algorithm for sorting. When + * implemented well, it can be about two or three times faster than its main competitors, merge + * sort and heapsort. + * + * Quicksort is a comparison sort, meaning that it can sort items of any type for which a + * "less-than" relation (formally, a total order) is defined. In efficient implementations it is + * not a stable sort, meaning that the relative order of equal sort items is not preserved. + * Quicksort can operate in-place on an array, requiring small additional amounts of memory to + * perform the sorting. + * + * Mathematical analysis of quicksort shows that, on average, the algorithm takes O(n log n) + * comparisons to sort n items. In the worst case, it makes O(n2) comparisons, though this + * behavior is rare. + */ + import java.util.ArrayList; - public class RBT { + +public class RBT{ int count=0; private final boolean RED = false; @@ -13,14 +58,16 @@ public class Node { int data; boolean color=BLACK; Node left, right, parent; - Node(int data) { + + Node(int data) { this.data = data; this.left=NIL; this.right=NIL; this.parent=NIL; } } - public void insert(int n) { + + public void insert(int n) { Node node = new Node(n); Node temp = root; if (root == NIL) { @@ -51,7 +98,8 @@ public void insert(int n) { makeRBT(node); } } - private void makeRBT(Node node) { + + private void makeRBT(Node node) { while (node.parent.color == RED) { Node s = NIL; if (node.parent == node.parent.parent.right) { @@ -90,7 +138,8 @@ private void makeRBT(Node node) { } root.color = BLACK;//root always black } - private void rotateLeft(Node node) { + + private void rotateLeft(Node node) { if (node.parent == NIL) { Node right = root.right; root.right = right.left; @@ -114,7 +163,8 @@ private void rotateLeft(Node node) { node.parent.left = node; } } - private void rotateRight(Node node) { + + private void rotateRight(Node node) { if (node.parent == NIL) { Node left = root.left; root.left = root.left.right; @@ -139,7 +189,7 @@ private void rotateRight(Node node) { } } - public Node Search(Node x,int k) {//Àç±ÍŽ»ö + public Node Search(Node x,int k) { count++; if(x==null || x.data==k) { return x; @@ -155,7 +205,7 @@ public int getCount() { return count; } - public void inorder(Node n) {//ÁßÀ§¼øÈ¸ + public void inorder(Node n) { if (n == NIL) { return; } @@ -173,4 +223,4 @@ public void get_Sorted_List(Node n, ArrayList arr) { get_Sorted_List(n.right,arr); } -} \ No newline at end of file +} \ No newline at end of file diff --git a/src/test/java/com/github/pedrovgs/problem81/TestRBT.java b/src/test/java/com/github/pedrovgs/problem81/TestRBT.java index 97292a3e..240e9632 100644 --- a/src/test/java/com/github/pedrovgs/problem81/TestRBT.java +++ b/src/test/java/com/github/pedrovgs/problem81/TestRBT.java @@ -1,3 +1,28 @@ -public class TestRBT { - return new RBT(); - } +/* + * Copyright (C) 2014 Pedro Vicente Gómez Sánchez. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.github.pedrovgs.problem81; + +import com.github.pedrovgs.sortingalgorithm.SortingAlgorithm; +import com.github.pedrovgs.sortingalgorithms.SortingAlgorithmTest; + +/** + * @author jsroyal. + */ +public class TestRBT{ + + return new RBT(); + +}