23
23
24
24
![ Heapsort-example] ( ../../shared-files/images/Heapsort-example.gif )
25
25
26
- ## 堆排实现
26
+ ## 堆实现
27
27
28
- 使用迭代实现也较为简单,注意索引值初始化和置位即可,尤其是记住最后一个索引的值 last,Java 的实现中 ` pop ()` 操作同时带有排序功能。
28
+ 使用迭代实现也较为简单,注意索引值初始化和置位即可,尤其是记住最后一个索引的值 last,Java 的实现中 ` poll ()` 操作同时带有排序功能。
29
29
30
30
### Python
31
31
@@ -79,6 +79,8 @@ class MaxHeap:
79
79
### Java
80
80
81
81
``` java
82
+ import java.util.* ;
83
+
82
84
/**
83
85
* Created by billryan on 29/7/2018.
84
86
*/
@@ -130,10 +132,14 @@ public class MaxHeap {
130
132
@Override
131
133
public String toString () {
132
134
StringBuilder sb = new StringBuilder ();
133
- sb. append(" heap array: " );
134
- for (int i : heap) {
135
- sb. append(String . format(" %d, " , i));
135
+ sb. append(" maxHeap: [" );
136
+ for (int i = 0 ; i < last - 1 ; i++ ) {
137
+ sb. append(String . format(" %d, " , heap[i]));
138
+ }
139
+ if (last > 0 ) {
140
+ sb. append(heap[last - 1 ]);
136
141
}
142
+ sb. append(" ]" );
137
143
return sb. toString();
138
144
}
139
145
@@ -150,6 +156,23 @@ public class MaxHeap {
150
156
System . out. println(" pop max heap value: " + maxHeap. pop());
151
157
System . out. println(maxHeap);
152
158
}
159
+
160
+ PriorityQueue<Integer > pq = new PriorityQueue<Integer > (10 , Collections . reverseOrder());
161
+ for (int i : array) {
162
+ pq. offer(i);
163
+ System . out. println(pq);
164
+ }
165
+
166
+ // Top K problem
167
+ int k = 5 ;
168
+ for (int i = 0 ; i < k; i++ ) {
169
+ Integer topk = pq. poll();
170
+ if (topk != null ) {
171
+ System . out. println(" top " + (i + 1 ) + " : " + topk);
172
+ } else {
173
+ System . out. println(" poll null value!!!" );
174
+ }
175
+ }
153
176
}
154
177
}
155
178
```
0 commit comments