sort xs[l, u), and put result to working area w. constraint, len(w) == u - l
(xs: &mut [T], mut l: usize, u: usize, mut w: usize)
| 165 | /// sort xs[l, u), and put result to working area w. |
| 166 | /// constraint, len(w) == u - l |
| 167 | fn wsort<T>(xs: &mut [T], mut l: usize, u: usize, mut w: usize) |
| 168 | where |
| 169 | T: Ord, |
| 170 | { |
| 171 | if u - l > 1 { |
| 172 | let m = (u + l) / 2; |
| 173 | do_sort(xs, l, m); |
| 174 | do_sort(xs, m, u); |
| 175 | wmerge(xs, l, m, m, u, w); |
| 176 | } else { |
| 177 | while l < u { |
| 178 | xs.swap(l, w); |
| 179 | l += 1; |
| 180 | w += 1; |
| 181 | } |
| 182 | } |
| 183 | } |
| 184 | |
| 185 | fn do_sort<T>(a: &mut [T], l: usize, u: usize) |
| 186 | where |