小数据上冒 c(child), p(parent)
(&mut self, mut c: usize)
| 109 | |
| 110 | // 小数据上冒 c(child), p(parent) |
| 111 | fn move_up(&mut self, mut c: usize) { |
| 112 | loop { |
| 113 | // 计算当前节点的父节点位置 |
| 114 | let p = parent!(c); |
| 115 | if p <= 0 { break; } |
| 116 | |
| 117 | // 当前节点数据小于父节点数据,交换 |
| 118 | if self.data[c] < self.data[p] { |
| 119 | self.data.swap(c, p); |
| 120 | } |
| 121 | |
| 122 | // 父节点成为当前节点 |
| 123 | c = p; |
| 124 | } |
| 125 | } |
| 126 | |
| 127 | // 大数据下沉 l(left), r(right) |
| 128 | fn move_down(&mut self, mut c: usize) { |