function bubbleSort<T extends number | string>(arr: T[]): T[] {
const length = arr.length;
for (let i = 0; i < length - 1; i++) {
for (let j = 0; j < length - 1 - i; j++) {
if ((arr[j] as any) > (arr[j + 1] as any)) {
const temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
泛型在这个算法实现中的优势:
- 代码复用:通过使用泛型,同一个
bubbleSort
函数可以用于多种数据类型(如数字数组、字符串数组)的排序,而不需要为每种数据类型编写单独的排序函数,提高了代码的复用性。
- 类型安全:在编译阶段,TypeScript 能够根据传入的实际类型参数对代码进行类型检查,确保只有支持比较操作的类型(如
number
和 string
)才能传递给 bubbleSort
函数,避免了在运行时出现类型不匹配的错误,增强了代码的健壮性。