(&mut self, mut k: usize)
| 105 | } |
| 106 | |
| 107 | fn sink(&mut self, mut k: usize) { |
| 108 | let n = self.n; |
| 109 | while 2 * k <= n { |
| 110 | let mut j = 2 * k; |
| 111 | if j < n && self.compare(j, j + 1) { |
| 112 | j += 1; |
| 113 | } |
| 114 | if !self.compare(k, j) { |
| 115 | break; |
| 116 | } |
| 117 | self.pq.swap(k, j); |
| 118 | k = j; |
| 119 | } |
| 120 | } |
| 121 | |
| 122 | fn compare(&self, i: usize, j: usize) -> bool { |
| 123 | (self.comparator)(&self.pq[i], &self.pq[j]) |