@@ -11,7 +11,7 @@ export quick_sort3;
11
11
12
12
type lteq [ T ] = fn ( & T , & T ) -> bool ;
13
13
14
- fn merge_sort[ T ] ( le: lteq[ T ] , v: vec[ T ] ) -> vec[ T ] {
14
+ fn merge_sort[ @ T ] ( le : lteq[ T ] , v : vec[ T ] ) -> vec[ T ] {
15
15
fn merge[ T ] ( le: lteq[ T ] , a: vec[ T ] , b: vec[ T ] ) -> vec[ T ] {
16
16
let rs: vec[ T ] = [ ] ;
17
17
let a_len: uint = len[ T ] ( a) ;
@@ -36,13 +36,13 @@ fn merge_sort[T](le: lteq[T], v: vec[T]) -> vec[T] {
36
36
ret merge[ T ] ( le, merge_sort[ T ] ( le, a) , merge_sort[ T ] ( le, b) ) ;
37
37
}
38
38
39
- fn swap[ T ] ( arr: vec[ mutable T ] , x: uint, y: uint) {
39
+ fn swap[ @ T ] ( arr: vec[ mutable T ] , x: uint, y: uint) {
40
40
let a = arr. ( x) ;
41
41
arr. ( x) = arr. ( y) ;
42
42
arr. ( y) = a;
43
43
}
44
44
45
- fn part[ T ] ( compare_func: lteq[ T ] , arr: vec[ mutable T ] , left: uint,
45
+ fn part[ @ T ] ( compare_func: lteq[ T ] , arr: vec[ mutable T ] , left: uint,
46
46
right: uint, pivot: uint) -> uint {
47
47
let pivot_value = arr. ( pivot) ;
48
48
swap[ T ] ( arr, pivot, right) ;
@@ -59,7 +59,7 @@ fn part[T](compare_func: lteq[T], arr: vec[mutable T], left: uint,
59
59
ret storage_index;
60
60
}
61
61
62
- fn qsort[ T ] ( compare_func: lteq[ T ] , arr: vec[ mutable T ] , left: uint,
62
+ fn qsort[ @ T ] ( compare_func: lteq[ T ] , arr: vec[ mutable T ] , left: uint,
63
63
right: uint) {
64
64
if right > left {
65
65
let pivot = ( left + right) / 2 u;
@@ -72,7 +72,7 @@ fn qsort[T](compare_func: lteq[T], arr: vec[mutable T], left: uint,
72
72
}
73
73
}
74
74
75
- fn quick_sort[ T ] ( compare_func: lteq[ T ] , arr: vec[ mutable T ] ) {
75
+ fn quick_sort[ @ T ] ( compare_func: lteq[ T ] , arr: vec[ mutable T ] ) {
76
76
if len[ T ] ( arr) == 0 u { ret; }
77
77
qsort[ T ] ( compare_func, arr, 0 u, len[ T ] ( arr) - 1 u) ;
78
78
}
@@ -82,7 +82,7 @@ fn quick_sort[T](compare_func: lteq[T], arr: vec[mutable T]) {
82
82
// http://www.cs.princeton.edu/~rs/talks/QuicksortIsOptimal.pdf
83
83
// According to these slides this is the algorithm of choice for
84
84
// 'randomly ordered keys, abstract compare' & 'small number of key values'
85
- fn qsort3[ T ] ( compare_func_lt: lteq[ T ] , compare_func_eq: lteq[ T ] ,
85
+ fn qsort3 [ @ T ] ( compare_func_lt : lteq[ T ] , compare_func_eq : lteq[ T ] ,
86
86
arr : vec[ mutable T ] , left : int , right : int ) {
87
87
if right <= left { ret; }
88
88
let v: T = arr. ( right) ;
@@ -130,7 +130,7 @@ fn qsort3[T](compare_func_lt: lteq[T], compare_func_eq: lteq[T],
130
130
qsort3[ T ] ( compare_func_lt, compare_func_eq, arr, i, right) ;
131
131
}
132
132
133
- fn quick_sort3[ T ] ( compare_func_lt: lteq[ T ] , compare_func_eq: lteq[ T ] ,
133
+ fn quick_sort3 [ @ T ] ( compare_func_lt : lteq[ T ] , compare_func_eq : lteq[ T ] ,
134
134
arr : vec[ mutable T ] ) {
135
135
if vec:: len[ T ] ( arr) == 0 u { ret; }
136
136
qsort3[ T ] ( compare_func_lt, compare_func_eq, arr, 0 ,
@@ -144,8 +144,8 @@ mod ivector {
144
144
145
145
type lteq [ T ] = fn ( & T , & T ) -> bool ;
146
146
147
- fn merge_sort [ T ] ( le : lteq[ T ] , v : & T [ ] ) -> T [ ] {
148
- fn merge[ T ] ( le: lteq[ T ] , a: & T [ ] , b: & T [ ] ) -> T [ ] {
147
+ fn merge_sort [ @ T ] ( le : lteq[ T ] , v : & T [ ] ) -> T [ ] {
148
+ fn merge [ @ T ] ( le : lteq[ T ] , a : & T [ ] , b : & T [ ] ) -> T [ ] {
149
149
let rs: T [ ] = ~[ ] ;
150
150
let a_len: uint = ilen[ T ] ( a) ;
151
151
let a_ix: uint = 0 u;
@@ -169,13 +169,13 @@ mod ivector {
169
169
ret merge[ T ] ( le, merge_sort[ T ] ( le, a) , merge_sort[ T ] ( le, b) ) ;
170
170
}
171
171
172
- fn swap[ T ] ( arr: & T [ mutable ] , x: uint, y: uint) {
172
+ fn swap [ @ T ] ( arr : & T [ mutable ] , x : uint , y : uint ) {
173
173
let a = arr. ( x) ;
174
174
arr. ( x) = arr. ( y) ;
175
175
arr. ( y) = a;
176
176
}
177
177
178
- fn part[ T ] ( compare_func: lteq[ T ] , arr: & T [ mutable ] , left: uint,
178
+ fn part [ @ T ] ( compare_func : lteq[ T ] , arr : & T [ mutable ] , left : uint ,
179
179
right : uint , pivot : uint ) -> uint {
180
180
let pivot_value = arr. ( pivot) ;
181
181
swap[ T ] ( arr, pivot, right) ;
@@ -192,7 +192,7 @@ mod ivector {
192
192
ret storage_index;
193
193
}
194
194
195
- fn qsort[ T ] ( compare_func: lteq[ T ] , arr: & T [ mutable ] , left: uint,
195
+ fn qsort [ @ T ] ( compare_func : lteq[ T ] , arr : & T [ mutable ] , left : uint ,
196
196
right : uint ) {
197
197
if right > left {
198
198
let pivot = ( left + right) / 2 u;
@@ -205,7 +205,7 @@ mod ivector {
205
205
}
206
206
}
207
207
208
- fn quick_sort[ T ] ( compare_func: lteq[ T ] , arr: & T [ mutable ] ) {
208
+ fn quick_sort [ @ T ] ( compare_func : lteq[ T ] , arr : & T [ mutable ] ) {
209
209
if ilen[ T ] ( arr) == 0 u { ret; }
210
210
qsort[ T ] ( compare_func, arr, 0 u, ilen[ T ] ( arr) - 1 u) ;
211
211
}
@@ -216,7 +216,7 @@ mod ivector {
216
216
// According to these slides this is the algorithm of choice for
217
217
// 'randomly ordered keys, abstract compare' & 'small number of key
218
218
// values'
219
- fn qsort3[ T ] ( compare_func_lt: lteq[ T ] , compare_func_eq: lteq[ T ] ,
219
+ fn qsort3 [ @ T ] ( compare_func_lt : lteq[ T ] , compare_func_eq : lteq[ T ] ,
220
220
arr : & T [ mutable ] , left : int , right : int ) {
221
221
if right <= left { ret; }
222
222
let v: T = arr. ( right) ;
@@ -264,7 +264,7 @@ mod ivector {
264
264
qsort3[ T ] ( compare_func_lt, compare_func_eq, arr, i, right) ;
265
265
}
266
266
267
- fn quick_sort3[ T ] ( compare_func_lt: lteq[ T ] , compare_func_eq: lteq[ T ] ,
267
+ fn quick_sort3 [ @ T ] ( compare_func_lt : lteq[ T ] , compare_func_eq : lteq[ T ] ,
268
268
arr : & T [ mutable ] ) {
269
269
if ilen[ T ] ( arr) == 0 u { ret; }
270
270
qsort3[ T ] ( compare_func_lt, compare_func_eq, arr, 0 ,
0 commit comments