mirror of https://github.com/golang/go.git
- added convenience wrappers for sort
(work now with Ken's latest compiler fix) - exoanded test cases accordingly - fixed a type in the spec (thx r) R=r DELTA=65 (62 added, 2 deleted, 1 changed) OCL=15050 CL=15050
This commit is contained in:
parent
d40f032d18
commit
0416f994b7
|
|
@ -2269,7 +2269,7 @@ representation of the integer.
|
||||||
5b) Converting an array of uint8s yields a string whose successive
|
5b) Converting an array of uint8s yields a string whose successive
|
||||||
bytes are those of the array. (Recall byte is a synonym for uint8.)
|
bytes are those of the array. (Recall byte is a synonym for uint8.)
|
||||||
|
|
||||||
string([]byte('h', 'e', 'l', 'l', 'o')) // "hello"
|
string([]byte{'h', 'e', 'l', 'l', 'o'}) // "hello"
|
||||||
|
|
||||||
Note that there is no linguistic mechanism to convert between pointers
|
Note that there is no linguistic mechanism to convert between pointers
|
||||||
and integers. A library may be provided under restricted circumstances
|
and integers. A library may be provided under restricted circumstances
|
||||||
|
|
|
||||||
|
|
@ -65,8 +65,6 @@ export func IsSorted(data SortInterface) bool {
|
||||||
|
|
||||||
|
|
||||||
// Convenience types for common cases
|
// Convenience types for common cases
|
||||||
// TODO: Once we can associate methods with all types, this can be simplified
|
|
||||||
// since we cann associate the methods with the arrays directly.
|
|
||||||
|
|
||||||
export type IntArray struct {
|
export type IntArray struct {
|
||||||
data *[]int;
|
data *[]int;
|
||||||
|
|
@ -93,3 +91,15 @@ export type StringArray struct {
|
||||||
func (p *StringArray) len() int { return len(p.data); }
|
func (p *StringArray) len() int { return len(p.data); }
|
||||||
func (p *StringArray) less(i, j int) bool { return p.data[i] < p.data[j]; }
|
func (p *StringArray) less(i, j int) bool { return p.data[i] < p.data[j]; }
|
||||||
func (p *StringArray) swap(i, j int) { p.data[i], p.data[j] = p.data[j], p.data[i]; }
|
func (p *StringArray) swap(i, j int) { p.data[i], p.data[j] = p.data[j], p.data[i]; }
|
||||||
|
|
||||||
|
|
||||||
|
// Convenience wrappers for common cases
|
||||||
|
|
||||||
|
export func SortInts(a *[]int) { Sort(&IntArray{a}); }
|
||||||
|
export func SortFloats(a *[]float) { Sort(&FloatArray{a}); }
|
||||||
|
export func SortStrings(a *[]string) { Sort(&StringArray{a}); }
|
||||||
|
|
||||||
|
|
||||||
|
export func IntsAreSorted(a *[]int) bool { return IsSorted(&IntArray{a}); }
|
||||||
|
export func FloatsAreSorted(a *[]float) bool { return IsSorted(&FloatArray{a}); }
|
||||||
|
export func StringsAreSorted(a *[]string) bool { return IsSorted(&StringArray{a}); }
|
||||||
|
|
|
||||||
|
|
@ -59,4 +59,54 @@ func main() {
|
||||||
panic();
|
panic();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Same tests again, this time using the convenience wrappers
|
||||||
|
|
||||||
|
{ data := []int{74, 59, 238, -784, 9845, 959, 905, 0, 0, 42, 7586, -5467984, 7586};
|
||||||
|
|
||||||
|
Sort.SortInts(&data);
|
||||||
|
|
||||||
|
/*
|
||||||
|
for i := 0; i < len(data); i++ {
|
||||||
|
print(data[i], " ");
|
||||||
|
}
|
||||||
|
print("\n");
|
||||||
|
*/
|
||||||
|
|
||||||
|
if !Sort.IntsAreSorted(&data) {
|
||||||
|
panic();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{ data := []float{74.3, 59.0, 238.2, -784.0, 2.3, 9845.768, -959.7485, 905, 7.8, 7.8};
|
||||||
|
|
||||||
|
Sort.SortFloats(&data);
|
||||||
|
|
||||||
|
/*
|
||||||
|
for i := 0; i < len(data); i++ {
|
||||||
|
print(data[i], " ");
|
||||||
|
}
|
||||||
|
print("\n");
|
||||||
|
*/
|
||||||
|
|
||||||
|
if !Sort.FloatsAreSorted(&data) {
|
||||||
|
panic();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{ data := []string{"", "Hello", "foo", "bar", "foo", "f00", "%*&^*&^&", "***"};
|
||||||
|
|
||||||
|
Sort.SortStrings(&data);
|
||||||
|
|
||||||
|
/*
|
||||||
|
for i := 0; i < len(data); i++ {
|
||||||
|
print(data[i], " ");
|
||||||
|
}
|
||||||
|
print("\n");
|
||||||
|
*/
|
||||||
|
|
||||||
|
if !Sort.StringsAreSorted(&data) {
|
||||||
|
panic();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue