LISTING 14 1 The heapify Method 1 void
- Slides: 29
히프화 메소드 LISTING 14. 1: The heapify() Method 1 void heapify(int[] a, int i, int n) { 2 int ai = a[i]; 3 while (i < n/2) { // a[i] is not a leaf 4 int j = 2*i + 1; // a[j] is ai’s left child 5 if (j+1 < n && a[j+1] > a[j]) ++j; // a[j] is ai’s larger child 6 if (a[j] <= ai) break; // a[j] is not out of order 7 a[i] = a[j]; // promote a[j] 8 i = j; // move down to next level 9 a[i] = ai; 10 } u 5
히프 구축 메소드 LISTING 14. 2: The build. Heap() Method 1 void build. Heap(int[] a, int i, int n) { 2 if (i >= n/2) return; 3 build. Heap(a, 2*i+1, n); 4 build. Heap(a, 2*i+2, n); 5 heapify(a, i, n); 6} u 8
Priority. Queue 인터페이스 u LISTING 14. 3: A Priority. Queue Interface 1 public interface Priority. Queue { 2 public void add(Object object); 3 // POSTCONDITION: the given object is in this queue; 5 public Object best(); 6 // RETURN: the highest priority element in this queue; 7 // PRECONDITION: this queue is not empty; 9 public Object remove. Best(); 10 // RETURN: the highest priority element in this queue; 11 // PRECONDITION: this queue is not empty; 12 // POSTCONDITION: the returned object is not in this queue; 14 public int size(); 15 // RETURN: the number of elements in this queue; 16 } 11
Heap. Priority. Queue 클래스 (1) LISTING 14. 4: A Heap. Priority. Queue Class 1 public class Heap. Priority. Queue implements Priority. Queue { 2 private static final int CAPACITY = 100; 3 private Comparable[] a; 4 private int size; 5 6 public Heap. Priority. Queue() { 7 this(CAPACITY); 8 } 9 10 public Heap. Priority. Queue(int capacity) { 11 a = new Comparable[capacity]; 12 } 13 u 14
Heap. Priority. Queue 클래스 (2) 14 public void add(Object object) { 15 if (!(object instanceof Comparable)) 16 throw new Illegal. Argument. Exception(); 17 Comparable x = (Comparable)object; 18 if (size == a. length) resize(); 19 int i = size++; 20 while (i > 0) { 21 int j = i; i = (i-1)/2; 23 if (a[i]. compare. To(x) >= 0) { 24 a[j] = x; return; 26 } 27 a[j] = a[i]; 28 } 29 a[i] = x; 30 } 15
Heap. Priority. Queue 클래스 (3) 32 public Object best() { 33 if (size == 0) throw new java. util. No. Such. Element. Exception(); 34 return a[0]; 35 } 37 public Object remove() { 38 Object best = best(); 39 a[0] = a[--size]; 40 heapify(0, size); 41 return best; 42 } 44 public int size() { 45 return size; 46 } 48 public String to. String() { 49 if (size == 0) return "{}"; 50 String. Buffer buf = new String. Buffer("{" + a[0]); 51 for (int i = 1; i < size; i++) 52 buf. append(", " + a[i]); 53 return buf + "}"; 54 } 16
Heap. Priority. Queue 클래스 (4) 56 57 58 59 60 61 62 63 64 65 66 68 69 70 71 72 private void heapify(int i, int n) { Comparable ai = a[i]; while (i < n/2) { int j = 2*i+1; if (j+1 < n && a[j+1]. compare. To(a[j]) > 0) ++j; if (a[j]. compare. To(ai) <= 0) break; a[i] = a[j]; i = j; } a[i] = ai; } private void resize() { Comparable[] aa = new Comparable[2*a. length]; System. arraycopy(a, 0, a. length); a = aa; } 73 } 17
Heap. Priority. Queue 클래스의 테스팅 (1) LISTING 14. 5: Testing the Heap. Priority. Queue Class 1 public class Test. Heap. Priority. Queue { 3 public Test. Heap. Priority. Queue() { 4 Priority. Queue queue = new Heap. Priority. Queue(); 5 int[] pages = {7, 3, 2, 8, 3, 4, 1, 3}; 6 for (int i = 0; i < pages. length; i++) { 7 queue. add(new Print. Job(null, pages[i])); 8 System. out. println("queue: " + queue); 9} 10 while (queue. size() > 0) { 11 System. out. println("queue. remove(): " + queue. remove()); 12 System. out. println("q: " + queue); 13 } 14 } 16 public static void main(String[] args) { 17 new Test. Heap. Priority. Queue(); 18 } 19 } u 18
Heap. Priority. Queue 클래스의 테스팅 (2) 21 class Print. Job implements Comparable { 22 private java. io. File file; 23 private int pages; 24 private String id; 25 private static int n = 100; 27 public Print. Job(java. io. File file, int pages) { 28 this. file = file; 29 this. pages = pages; 30 this. id = "ID" + n++; 31 } 33 public int compare. To(Object object) { 34 if (!(object instanceof Print. Job)) 35 throw new Illegal. Argument. Exception(); 36 Print. Job that = (Print. Job)object; 37 return that. pages - this. pages; 38 } 40 public String to. String() { 41 return id + "(" + pages + ")"; 42 } 43 } 19
출력 u 출력 결과 q: {ID 100(7)} q: {ID 101(3), ID 100(7)} q: {ID 102(2), ID 100(7), ID 101(3), ID 103(8)} q: {ID 102(2), ID 104(3), ID 101(3), ID 103(8), ID 100(7), ID 105(4)} q: {ID 106(1), ID 104(3), ID 102(2), ID 103(8), ID 100(7), ID 105(4), ID 101(3)} q: {ID 106(1), ID 104(3), ID 102(2), ID 107(3), ID 100(7), ID 105(4), ID 101(3), ID 103(8)} queue. remove(): ID 106(1) q: {ID 102(2), ID 104(3), ID 101(3), ID 107(3), ID 100(7), ID 105(4), ID 103(8)} queue. remove(): ID 102(2 q: {ID 104(3), ID 107(3), ID 101(3), ID 103(8), ID 100(7), ID 105(4)} queue. remove(): ID 104(3) q: {ID 107(3), ID 105(4), ID 101(3), ID 103(8), ID 100(7)}queue. remove(): ID 107(3) q: {ID 101(3), ID 105(4), ID 100(7), ID 103(8)}queue. remove(): ID 101(3) q: {ID 105(4), ID 103(8), ID 100(7)}queue. remove(): ID 105(4) q: {ID 100(7), ID 103(8)}queue. remove(): ID 100(7) q: {ID 103(8)}queue. remove(): ID 103(8) q: {} 20
Huffman_Encoding(S, f) { /* Input: S(a string of charaters), f(an array of frequency) Output : T(The Huffman tree for S) */ insert all characters into a heap H according to their frequencies; while (H is not empty) { if (H contains only one character X) make X the root of T; else { pick two characters X and Y with lowest frequencies and delete them; replace X and Y with a new character Z whose frequency is the sum of the frequencies of X and Y; insert Z into H; make X and Y children of Z in T; /* Z has no parent yet */ } } } 28
- Heapify runtime
- Heap tree visualization
- Heapify runtime
- Heapify iterative
- Heapify down
- Void setup e void loop
- Void main(void)
- Void main(void)
- Gcf of 90 and 72
- Find multiples of a number
- Symposium advantages and disadvantages
- Hát kết hợp bộ gõ cơ thể
- Ng-html
- Bổ thể
- Tỉ lệ cơ thể trẻ em
- Voi kéo gỗ như thế nào
- Glasgow thang điểm
- Hát lên người ơi
- Môn thể thao bắt đầu bằng từ chạy
- Thế nào là hệ số cao nhất
- Các châu lục và đại dương trên thế giới
- Công thức tiính động năng
- Trời xanh đây là của chúng ta thể thơ
- Mật thư tọa độ 5x5
- Làm thế nào để 102-1=99
- Phản ứng thế ankan
- Các châu lục và đại dương trên thế giới
- Thể thơ truyền thống
- Quá trình desamine hóa có thể tạo ra
- Một số thể thơ truyền thống