From df90cc0e2c5afdda71e80342478ea17ff831c2b7 Mon Sep 17 00:00:00 2001 From: lronmanlx Date: Tue, 15 Dec 2020 14:10:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HeapSort.class" | Bin 0 -> 1391 bytes .../HeapSort.java" | 45 +++++++ .../MaxHeap.class" | Bin 0 -> 2396 bytes .../MaxHeap.java" | 118 ++++++++++++++++++ .../TestHeap.class" | Bin 0 -> 1519 bytes .../TestHeap.java" | 35 ++++++ .../MergeK.class" | Bin 0 -> 956 bytes .../MergeK.java" | 50 ++++++++ .../TOP_K$Heap.class" | Bin 0 -> 866 bytes .../TOP_K.class" | Bin 0 -> 792 bytes .../TOP_K.java" | 59 +++++++++ 11 files changed, 307 insertions(+) create mode 100644 "20200340930_\345\210\230\347\277\224-lec07-heap/\345\237\272\347\241\200\344\275\234\344\270\232/\345\256\236\347\216\260\345\240\206\346\216\222\345\272\217/HeapSort.class" create mode 100644 "20200340930_\345\210\230\347\277\224-lec07-heap/\345\237\272\347\241\200\344\275\234\344\270\232/\345\256\236\347\216\260\345\240\206\346\216\222\345\272\217/HeapSort.java" create mode 100644 "20200340930_\345\210\230\347\277\224-lec07-heap/\345\237\272\347\241\200\344\275\234\344\270\232/\345\256\236\347\216\260\345\244\247\351\241\266\345\240\206\357\274\210\345\205\245\345\240\206\343\200\201\345\207\272\345\240\206\357\274\211/MaxHeap.class" create mode 100644 "20200340930_\345\210\230\347\277\224-lec07-heap/\345\237\272\347\241\200\344\275\234\344\270\232/\345\256\236\347\216\260\345\244\247\351\241\266\345\240\206\357\274\210\345\205\245\345\240\206\343\200\201\345\207\272\345\240\206\357\274\211/MaxHeap.java" create mode 100644 "20200340930_\345\210\230\347\277\224-lec07-heap/\345\237\272\347\241\200\344\275\234\344\270\232/\345\256\236\347\216\260\345\244\247\351\241\266\345\240\206\357\274\210\345\205\245\345\240\206\343\200\201\345\207\272\345\240\206\357\274\211/TestHeap.class" create mode 100644 "20200340930_\345\210\230\347\277\224-lec07-heap/\345\237\272\347\241\200\344\275\234\344\270\232/\345\256\236\347\216\260\345\244\247\351\241\266\345\240\206\357\274\210\345\205\245\345\240\206\343\200\201\345\207\272\345\240\206\357\274\211/TestHeap.java" create mode 100644 "20200340930_\345\210\230\347\277\224-lec07-heap/\350\277\233\351\230\266\344\275\234\344\270\232/\344\274\230\345\205\210\347\272\247\351\230\237\345\210\227\345\220\210\345\271\266K\344\270\252\346\234\211\345\272\217\346\225\260\347\273\204/MergeK.class" create mode 100644 "20200340930_\345\210\230\347\277\224-lec07-heap/\350\277\233\351\230\266\344\275\234\344\270\232/\344\274\230\345\205\210\347\272\247\351\230\237\345\210\227\345\220\210\345\271\266K\344\270\252\346\234\211\345\272\217\346\225\260\347\273\204/MergeK.java" create mode 100644 "20200340930_\345\210\230\347\277\224-lec07-heap/\350\277\233\351\230\266\344\275\234\344\270\232/\345\212\250\346\200\201\346\225\260\346\215\256\351\233\206\345\220\210\347\232\204Top K/TOP_K$Heap.class" create mode 100644 "20200340930_\345\210\230\347\277\224-lec07-heap/\350\277\233\351\230\266\344\275\234\344\270\232/\345\212\250\346\200\201\346\225\260\346\215\256\351\233\206\345\220\210\347\232\204Top K/TOP_K.class" create mode 100644 "20200340930_\345\210\230\347\277\224-lec07-heap/\350\277\233\351\230\266\344\275\234\344\270\232/\345\212\250\346\200\201\346\225\260\346\215\256\351\233\206\345\220\210\347\232\204Top K/TOP_K.java" diff --git "a/20200340930_\345\210\230\347\277\224-lec07-heap/\345\237\272\347\241\200\344\275\234\344\270\232/\345\256\236\347\216\260\345\240\206\346\216\222\345\272\217/HeapSort.class" "b/20200340930_\345\210\230\347\277\224-lec07-heap/\345\237\272\347\241\200\344\275\234\344\270\232/\345\256\236\347\216\260\345\240\206\346\216\222\345\272\217/HeapSort.class" new file mode 100644 index 0000000000000000000000000000000000000000..97f4a41380e60dfb6628ec576a98a0ccf167271b GIT binary patch literal 1391 zcmaJ>&uQ!>m{JzqZQwRdFq zsn}@|!rQ|08D{fa)jjb-6kEc7UaUo3&wpN4#OYcj8vC1~Gt4)zWMG*gu`5Nh7IY&9 zJ-<~^iAe>0+1%@e1R4ZZMsO|YbsO@Lr;1HKmZGC*j;fWy6p|@i#3chCrI1H~!F(75 zQ5bbaXH!PIK{K3*!%ko&g;jiPz)7KqTPa+IMIt_|Mzmw??#`ZUkc3NTG{g|ws+`EK z9fXl=lS@I5IM&DmFDQOZ21I0o6m2s6HtrCW%`?ok#lGAK{Dz3W^P*iEg^}>1khu9u z;k1RMV<_$9lH^)P6;Q0xoWe5$pQwiKGAtf9=J_vzeL3Enk%UL05e3}?17FaFSA$@` z*I`Iid|!4qS|SW3>H2Z9!g!65w~vM2Y{_tOL@b{cGJ%{RK0WBjGtwswAMHYU(vk5J z8=}>!d66s|xW}+`s=u?eG35R~4>#!SC+H>s988@ndY_|NmLj95+kb%lN(1tT-ti%* z5~p#V#wzs(qQ)scG2?$G>zZl0b#5ANU5~r$UeE1RqRb*;oL zo;^fn)#6S`{|%a@zovEYJM@>F9S#0bHDkk?*M_TWSfKCA&~cCEUs2p7;WLyqhu8oP zbOWY=3-n_o{0(v>lCH>DgZHlwDr91TSZRZeEDwcEwS^O8w z*;zGoEq#4VJsSLFXD#j?yXXw}Dnq-LrOG*Ea2*Bu_bcKiKF1;+U= 0; i--) { + headAdjust(list, list.length, i); + } + //排序,将最大的节点放在堆尾,然后从根节点重新调整 + for (int i = list.length - 1; i >= 1; i--) { + int temp = list[0]; + list[0] = list[i]; + list[i] = temp; + headAdjust(list, i, 0); + } + } + + private static void headAdjust(int[] list, int len, int i) { + int k = i, temp = list[i], index = 2 * k + 1; + while (index < len) { + if (index + 1 < len) { + if (list[index] < list[index + 1]) { + index = index + 1; + } + } + if (list[index] > temp) { + list[k] = list[index]; + k = index; + index = 2 * k + 1; + } else { + break; + } + } + list[k] = temp; + } +} \ No newline at end of file diff --git "a/20200340930_\345\210\230\347\277\224-lec07-heap/\345\237\272\347\241\200\344\275\234\344\270\232/\345\256\236\347\216\260\345\244\247\351\241\266\345\240\206\357\274\210\345\205\245\345\240\206\343\200\201\345\207\272\345\240\206\357\274\211/MaxHeap.class" "b/20200340930_\345\210\230\347\277\224-lec07-heap/\345\237\272\347\241\200\344\275\234\344\270\232/\345\256\236\347\216\260\345\244\247\351\241\266\345\240\206\357\274\210\345\205\245\345\240\206\343\200\201\345\207\272\345\240\206\357\274\211/MaxHeap.class" new file mode 100644 index 0000000000000000000000000000000000000000..864481dbf40dcb37e2b5505525e412e8e70f3ee7 GIT binary patch literal 2396 zcmaJ?-*XdH6#j0q*|h1>7HBB7DS|?qrqJ+13iKD!0JfNdm_RL{uuYbBX|fwPTck3+ z;e#{2IpgT)I1Vt=7anv*%M@l9U-iMiz`uk+@VmQ7lm5Vm+`Z@A@0|Oc@1A?}*UKl* z033r6!44$DI2b_y$wowRs0oL0B#d{OpyH@B2IO!|4#y(|oRG6YISk2RSo%i77>%G6 z$!*L!CTA%*oDSnm7-t1S#c@L~3ACnf>9_Udf@>C%X|wDO2{dNRSxa{p977jd~>zLN8KwG@GF1_z%afgSqgM)PowSE2aN9)!u%-k|^Qng6NUT|{8SyPs+ zP3m`~zWq{M4V{PyY_AD@%5n5XskVl8>v#1#S9190Jg!^$f>GY<2M%rI zU*}m9m|ZLxo4~Ku;VbQ5Ut%RiN-q>LrfaZB>auS`eVcI;*!BN7?BUb4gD)D7PF@{; zJ7@*)2A@VD?-|D~dJZDU8PJ+|43T(>!1QATe~0p`7rTpNGZ8=-3L4RZ2*12imFPcd zsa(C)ITBOyp~7h5Hz=_cgaY^j>Yx()38$s2tLo}dRuB$gAQTP#0Cfr7Uceg23L1i# z>Z&AMdiBhM$Uy0ryaJHC2C#)=Gp!ah@WpP&HrCaKL#%v&)(O^nk)8}|oo2)}vNoy9 z9!70N@Fm)X2t$2=J>ofE1Vz3Iep#ZGR+zAdoui?yIpxNHvWDScD5}IB;I4E=$;+?S zx0D-I+b>il^gf!R>W@(GDWW5^HmC|xJvDm0ZPp`X*-@p+Wa-tH9;zd>UXU@00CZE3 z9v)Skhn`^B`;kIF-@_!uIE*iN3}lzQHiQ#Rwi?)DveLl$Y395$Cwr z^&I=C%U+HFuVqg1D_f#d@>oHmz=)jntsoM>R3f&Frdszf8KL9sn{zyuG|yzR(uv(n z+C!Rt(!UY%kYD&oHG%J`>!V8IEdh+g0zX$h-ll%9NkEs9uZb?zT6H!{LRFT^L+p;N zTKBO%QL~i%GFpO?DJ2Vzr?ODdn7aj{zW8=RyK7v74>=S#{n<8A2;}okk2P9 Q;5t`N(r%#rE`O)~10|jbL;wH) literal 0 HcmV?d00001 diff --git "a/20200340930_\345\210\230\347\277\224-lec07-heap/\345\237\272\347\241\200\344\275\234\344\270\232/\345\256\236\347\216\260\345\244\247\351\241\266\345\240\206\357\274\210\345\205\245\345\240\206\343\200\201\345\207\272\345\240\206\357\274\211/MaxHeap.java" "b/20200340930_\345\210\230\347\277\224-lec07-heap/\345\237\272\347\241\200\344\275\234\344\270\232/\345\256\236\347\216\260\345\244\247\351\241\266\345\240\206\357\274\210\345\205\245\345\240\206\343\200\201\345\207\272\345\240\206\357\274\211/MaxHeap.java" new file mode 100644 index 0000000..97ee971 --- /dev/null +++ "b/20200340930_\345\210\230\347\277\224-lec07-heap/\345\237\272\347\241\200\344\275\234\344\270\232/\345\256\236\347\216\260\345\244\247\351\241\266\345\240\206\357\274\210\345\205\245\345\240\206\343\200\201\345\207\272\345\240\206\357\274\211/MaxHeap.java" @@ -0,0 +1,118 @@ +import java.util.ArrayList; +import java.util.List; + +public class MaxHeap > { + private List mHeap; // 存放元素的动态数组 + + public MaxHeap() { + + this.mHeap = new ArrayList<>(); + } + + protected void filterup(int start) { + + int c = start; // 需要调整的节点的初始位置 + int p = (c - 1) / 2; // 当前节点的父节点的位置 + T tmp = mHeap.get(c); // 被调整节点的值 + + while (c > 0) { + // 父节点的值和被调整节点的值进行比较 + int cmp = mHeap.get(p).compareTo(tmp); + if (cmp >= 0) { + // 父节点大 + break; + } else { + // 被调整节点的值大,交换 + mHeap.set(c, mHeap.get(p)); + c = p; + p = (c - 1) / 2; + } + } + // 找到被调整节点的最终位置了 + mHeap.set(c, tmp); + } + + + protected void filterdown(int start, int end) { + + int c = start; // 被下调节点的初始位置 + int l = 2 * c + 1; // 左孩子节点的位置 + T tmp = mHeap.get(c); // 当前节点的值(大小) + + while (l <= end) { + // 当前节点的左右节点进行比较 + int cmp = mHeap.get(l).compareTo(mHeap.get(l + 1)); + // 取大的 + if (l < end && cmp < 0) { + l++; + } + // 当前节点和大的那个再比较一下 + cmp = tmp.compareTo(mHeap.get(l)); + if (cmp >= 0) { + // 当前节点大,不用动 + break; + } else { + // 当前节点小,交换 + mHeap.set(c, mHeap.get(l)); + c = l; // 更新当前节点的位置 + l = 2 * c + 1; // 更新当前节点的左孩子位置 + } + } + mHeap.set(c, tmp); + } + + + /** + * 向大顶堆中插入新元素 + * + * @param data + */ + public void insert(T data) { + + int insertIndex = mHeap.size(); // 获取插入的位置 + // 将新元素插入到数组尾部 + mHeap.add(data); + // 调用filterup函数,调整大顶堆 + filterup(insertIndex); + } + + + + public int remove(T data) { + + // 大顶堆空 + if (mHeap.isEmpty()) { + return -1; + } + + // 获取data在数组中的索引 + int index = mHeap.indexOf(data); + if (index == -1) { + return -1; + } + + // 堆中元素的个数 + int size = mHeap.size(); + // 删除了data元素,需要用最后一个元素填补,然后调用filterdown算法进行调整 + mHeap.set(index, mHeap.get(size - 1)); // 用最后一个元素填补 + mHeap.remove(size - 1); // 删除最后一个元素 + + if (mHeap.size() > 1 && index < mHeap.size()) { + // 调整成大顶堆 + filterdown(index, mHeap.size() - 1); + } + return 0; + } + + + @Override + public String toString() { + + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < mHeap.size(); i++) { + sb.append(mHeap.get(i) + " "); + } + return sb.toString(); + } + +} \ No newline at end of file diff --git "a/20200340930_\345\210\230\347\277\224-lec07-heap/\345\237\272\347\241\200\344\275\234\344\270\232/\345\256\236\347\216\260\345\244\247\351\241\266\345\240\206\357\274\210\345\205\245\345\240\206\343\200\201\345\207\272\345\240\206\357\274\211/TestHeap.class" "b/20200340930_\345\210\230\347\277\224-lec07-heap/\345\237\272\347\241\200\344\275\234\344\270\232/\345\256\236\347\216\260\345\244\247\351\241\266\345\240\206\357\274\210\345\205\245\345\240\206\343\200\201\345\207\272\345\240\206\357\274\211/TestHeap.class" new file mode 100644 index 0000000000000000000000000000000000000000..2f4b192e79a39eddc3ce5cd3ff2295a24f7d78c0 GIT binary patch literal 1519 zcmaJ>U2_vv7=BKYX1B|>T?zu#rl1x~X=xS3uQXMOmIf2HnhF!R@iaY@rO9q)chjMF z&WH}9j>C)$qs%xIhZ!#PLeWVTnEn8NN7D{h-g|+*XE&WDQb}gsbI$wyJnz}_=c9Y8 z0A9m~8g`;zK|(_W{hb)Veia8aJd5X~cwWOG4ocf06)#9lQi`Eo3O*v$qrG4_qTodZ zFEPZ&E!*-Z7^2Cc(+shUGbb2&a+WPl)he^Xo#C@((!?sGXlM)$iATy0yM?zwyO#V*Dv9dF=G1t}flNb8uuTg|AA zYd6=gT-~^FxpDi>!&~*n^5+yKy@Qaq8I0qO<9oi#t9jvHaOS+8INnilTt^1)>Ua;6 zDo!w{o1Id`7F2WgqA2+ck#pHLePPM-MTO{dYGi#XB*${brimG!_z}F4V%QZVYF9IK zRHYL|CAa5P3G8K}J(kQ$l6P+PleK*@FI?hqk(X=2JTGUH9coF`^q}f-%l3pzh5A|x zWt>WtyK=h00Na`f(UM-n6bSH;97{Nm_3J-}Ghu6geA&4A^?wLw*jwQXBIDR4?w_&z z3$*imZu_3Z+16n5_E3MWs5pysN&dG#YT=M

bvT;di&6RA0eKInPrJgIi=-_M)>O zn%6aKZIYLK$6Zn|P4#n*vrwxt=vmtqZl=sVPf)+#w$jzi5ni1sZqJp4Hy8${T3By_ zYSFX>&MZ~MHtww-)h73kr^xVfxnTJsrQidGgOB0ct~Z8(C;QRcV9d~~I7(7Arp?@aM2ahj=I=S9!`wbp^VV- zJJdQlFGty(f7YauxnN9xdxk0wSEp`A2|d*}jMtY%pC`Lb?9>SOC4&A5_Tek^;T!bhI maxHeap = new MaxHeap(); + + //添加元素 + System.out.print("=== 依次添加元素:"); + for(int i = 0; i < a.length; i++) { + System.out.println(a[i]); + maxHeap.insert(a[i]); + } + + //生成的大顶堆 + System.out.println("=== 生成的大顶堆:"); + System.out.println(maxHeap); + + //添加新元素85 + int data = 85; + maxHeap.insert(data); + System.out.println("=== 添加新元素" + data + "之后的大顶堆:"); + System.out.println(maxHeap); + + //删除元素90 + data = 90; + maxHeap.remove(data); + System.out.println("=== 删除元素" + data + "之后的大顶堆:"); + System.out.println(maxHeap); + + } + +} \ No newline at end of file diff --git "a/20200340930_\345\210\230\347\277\224-lec07-heap/\350\277\233\351\230\266\344\275\234\344\270\232/\344\274\230\345\205\210\347\272\247\351\230\237\345\210\227\345\220\210\345\271\266K\344\270\252\346\234\211\345\272\217\346\225\260\347\273\204/MergeK.class" "b/20200340930_\345\210\230\347\277\224-lec07-heap/\350\277\233\351\230\266\344\275\234\344\270\232/\344\274\230\345\205\210\347\272\247\351\230\237\345\210\227\345\220\210\345\271\266K\344\270\252\346\234\211\345\272\217\346\225\260\347\273\204/MergeK.class" new file mode 100644 index 0000000000000000000000000000000000000000..2e274e110eb775f68b08bfcd454c05f756b55a29 GIT binary patch literal 956 zcmZWnTTc@~6#jhNW(Bu@@{`BT*kr z_$Bz@tD309kUkrKf`5VkAfB0uNXTsFoc+#s&V1+0{QUjB1K>JRCIp5}7_h>KA#UO< zY!l}&B9IVBG8nh~h9Ar^XsPrHgMPR9)MMyh^c&uCyT0bN9=U5ZLU`S4t&)c=e97HZ6oFAnue*MOA(pBvZn!Vqe9djF=SxA$Z>-PC@@A>oZdJW|zAV|h zBug&jBr}2#!VyH!ComSld5jB8L~sF<0v98g!X=X0qP^a{r58U$Snpn(oTn0Ax?l4KcKp7{p$i5waY?S=w1qR~{yCn~d`QzEdF z>D1jG~D#yrMVonnv~xlavXH@X66mLoF}2auQUme0 zI&PplB7FHfqPJq-ENi+`)(xl3Lr&R<8qVTBkRO4!+nb{g$!@F)nnYz<#aSTk1|AcaAPSv@CVt&L!>v*q7yNGPjXdHDRE+w@*} z0%K)A>=uKt8%5Se3<(=ijM*56Wn%)9f6Et(YG`BN>{7e!ch*~882X{Wgv2Vey!MMi zWwYsT@m^D1f-H$gD2d>YxU?qY7%bXTJY9sw2e9*>A@a^w>l3sCo&{{$)6i+BVc-m_ zlg!5dbr$(fb~;Y}5Ss3OL_!5lB`^K)5p)TpDWEAr04X-lViIXS8G?flBFz$#9nSNO zh4Rj~j@g58ps$*lZKLM&5HK)ha9g6QgFB3jn%l$j|LF`<$$UoD9l=n3b-#Z&YLU^X z%BT&hj2f%nj|N|&R=`E|&0yDoQeO7?BeQ@eAdje5J|t z4QbsXEvbOg%5m4^oQ@c7!P*#lu%Ontn55qag6#0 za@Fa{;hpH`9csVd|1n~bR^PxC+N)g0HE#4eX81Rm$4xbP6xsIQ4etU8m8wdJs7YIqs#4Vjnk1v*lGu^$Ai84# zzkm=+HmpG?K~&-c`Y-$di^3hJl|c1k?)80~bMBovIQ;Pwzycl{NFt}>vH=BGbW9o0 zkW=yD{TsFV@c{C7TIOctaW#rOu0_eaZr}zA28t-@DC?MI(4GoDU@+^pE!^cE_dMY- zglm><`HKu{p}0v!%T8A?BpQ}2R)_tza5s3nM-i>hEt}y?VY{)*U-3$h+dGw(?^^aw zRW`<3KJUD2^1)HP(Q<}vM?A4)v$3(Z{(NO#HZsIkh37Yg#P&?2kvY!ir9c^(V@L)h zL*MFEo^iYD^i9m8V&W#|Ox!|7$88gLaM#2=+}E*S;sGA&cx0lA8bc@`JcbFhuC;eX z$EQIGb*Wdk#cRKA9|h_(Kks%a>p3pPCiIgT_dH+pDenv^k)2F$IhA!9-KPZz-mg;M zi(t9RHX;3^eaUtC9&I_|JCj`n8>|;k?vNoJjQl?`=^RL&9<4rGIN4R)#55B0MC7M{ zK#-v`OMf}CjBKbh2Kzz|QPUX?f*PVYi*w}5(sxkl83DC@C|gNm47ITjZEK8BQ(erZ z!k>^X&!+SdA|piKs_gThU*!>uuZWeu!TgT+2&W{25-`jl67U$%ks|*BaplRD5TiSk p7Zk^Nsz^XNlozS!(AaMhqEe{@xrj?-H4>)~0O*ZNFM-pD`~|M%o@4+3 literal 0 HcmV?d00001 diff --git "a/20200340930_\345\210\230\347\277\224-lec07-heap/\350\277\233\351\230\266\344\275\234\344\270\232/\345\212\250\346\200\201\346\225\260\346\215\256\351\233\206\345\220\210\347\232\204Top K/TOP_K.java" "b/20200340930_\345\210\230\347\277\224-lec07-heap/\350\277\233\351\230\266\344\275\234\344\270\232/\345\212\250\346\200\201\346\225\260\346\215\256\351\233\206\345\220\210\347\232\204Top K/TOP_K.java" new file mode 100644 index 0000000..c7a332b --- /dev/null +++ "b/20200340930_\345\210\230\347\277\224-lec07-heap/\350\277\233\351\230\266\344\275\234\344\270\232/\345\212\250\346\200\201\346\225\260\346\215\256\351\233\206\345\220\210\347\232\204Top K/TOP_K.java" @@ -0,0 +1,59 @@ +import java.util.Arrays; +import java.util.Random; + +public class TOP_K { + public static void main(String[]args){ + Heap heap = new Heap(10); + Random r = new Random(); + for (int i = 0;i<10000000;i++){ + heap.add(r.nextInt(1000000000)); + }; + heap.sort(); + System.out.println(Arrays.toString(heap.heap)); + } + //堆根即arr[0] 两子节点arr[2*0+1],arr[2*0+2], 同理 arr[1]的两子节点 arr[1*2+1],arr[1*2+2] .... + //小根堆(arr[i]heap[0]){//由于是小根堆,判断当前元素是否比最小的大 + heap[0]=data;//如果大替换为 + minToRoot(heap.length);//在当前数组大小范围内进行交换 + } + } + private void minToRoot(int k){//指定数组下标范围内交换 + if (k<2) return; + for (int i = 0; 2*i+1arr[len-1] 2.排序 3.最小值->arr[len-2] ..... + int k = heap.length; + while (k-1>0){ + swap(0,k-1);//当前堆根最小 将堆根与(k的范围内)最后的元素交换 + k--; + minToRoot(k);//在下标k的返回内 保持堆性质 + } + } + } +} -- Gitee