Files
iroute/lib/v5/pages/sort/functions/insertion.dart
toly 9313882748 v5
2023-10-24 12:17:11 +08:00

20 lines
729 B
Dart

import '../functions.dart';
///插入排序
Future<void> insertionSort(List<int> src, SortCallback callback) async {
for (int i = 1; i < src.length; i++) {
int temp = src[i]; // 将当前元素存储到临时变量 temp 中
int j = i - 1; // j 表示已排序部分的最后一个元素的索引
// 在已排序部分从后往前查找,找到合适位置插入当前元素
while (j >= 0 && temp < src[j]) {
src[j + 1] = src[j]; // 当前元素比已排序部分的元素小,将元素后移一位
--j; // 向前遍历
// 更新排序结果回调
await callback(src);
}
src[j + 1] = temp; // 插入当前元素到已排序部分的正确位置
await callback(src);
}
}