MCPcopy Create free account
hub / github.com/douchuan/algorithm / wsort

Function wsort

src/sort/merge.rs:167–183  ·  view source on GitHub ↗

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)

Source from the content-addressed store, hash-verified

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

Callers 1

do_sortFunction · 0.85

Calls 2

do_sortFunction · 0.85
wmergeFunction · 0.85

Tested by

no test coverage detected