- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
namespace Generics {
function swap<T>(arr: T[], i: number, j: number): void {
let temp: T = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
function sortHelper<T>(arr: T[], callbackfn?: (value1: T, value2: T) => number): T[] {
if (arr.length <= 0 || !callbackfn) {
return arr;
}
let len = arr.length;
// simple selection sort.
for (let i = 0; i < len - 1; ++i) {
for (let j = i + 1; j < len; ++j) {
if (callbackfn(arr[i], arr[j]) > 0) {
swap(arr, i, j);
}
}
}
return arr;
}
export function arraySort<T>(arr: T[], callbackfn?: (value1: T, value2: T) => number): T[] {
return sortHelper(arr, callbackfn);
}
}
function main() {
print("testGenerics")
let inArray = [4.0, 3.0, 4593.0, 23.0, 43.0, -1.0]
Generics.arraySort(inArray, (x: number, y: number) => { return x - y })
let expectedArray = [-1.0, 3.0, 4.0, 23.0, 43.0, 4593.0]
for (let i = 0; i < expectedArray.length; i++) {
assert(inArray[i] == expectedArray[i])
}
}
ну вот и все.. можно считать последний говнокод... подходит миссия к концу.... и ... потом заархивить все и положить на полочку