diff options
Diffstat (limited to 'src/components/util/sort.rs')
-rw-r--r-- | src/components/util/sort.rs | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/components/util/sort.rs b/src/components/util/sort.rs index 8f5a95e149e..60c62aab262 100644 --- a/src/components/util/sort.rs +++ b/src/components/util/sort.rs @@ -14,14 +14,14 @@ fn quicksort_helper<T:Ord + Eq>(arr: &mut [T], left: int, right: int) { let mut p: int = i; let mut q: int = j; unsafe { - let v: *mut T = &mut arr[right]; + let v: *mut T = &mut arr[right as uint]; loop { i += 1; - while arr[i] < (*v) { + while arr[i as uint] < (*v) { i += 1 } j -= 1; - while (*v) < arr[j] { + while (*v) < arr[j as uint] { if j == left { break } @@ -31,11 +31,11 @@ fn quicksort_helper<T:Ord + Eq>(arr: &mut [T], left: int, right: int) { break } arr.swap(i as uint, j as uint); - if arr[i] == (*v) { + if arr[i as uint] == (*v) { p += 1; arr.swap(p as uint, i as uint) } - if (*v) == arr[j] { + if (*v) == arr[j as uint] { q -= 1; arr.swap(j as uint, q as uint) } @@ -89,7 +89,7 @@ pub mod test { let mut rng = rand::task_rng(); for _ in range(0, 50000) { let len: uint = rng.gen(); - let mut v: ~[int] = rng.gen_vec((len % 32) + 1); + let mut v: ~[int] = rng.gen_vec((len % 32) + 1).iter().map(|&x| x).collect(); sort::quicksort(v); for i in range(0, v.len() - 1) { assert!(v[i] <= v[i + 1]) |