本文已参与「新人创作礼」活动,一起开启掘金创作之路。
这是【Dart 教程系列第 46 篇】,如果觉得有用的话,欢迎关注专栏。
如果你对插入排序不太清楚,可以看下这篇博客 什么是插入排序 ?
如果你不想看,我就简单说下
插入排序就是把一个无序数组中的数一个接一个地插入到有序的数组中。
一、插入排序的实现
下面说下在 Dart 中如何实现插入排序的算法,注:默认无序数组中,下标为 0 的元素已经是有序。
List<int> l = [8, 4, 2, 9, 7, 14, 0, 21, 6, 35, 1, 99];
void insert() {
for (var i = 1; i < l.length; i++) {
int insertVal = l[i];
int insertIndex = i - 1;
while (insertIndex >= 0 && insertVal < l[insertIndex]) {
l[insertIndex + 1] = l[insertIndex];
insertIndex--;
}
l[insertIndex + 1] = insertVal;
}
print("排序后的数组 l :$l");
}
控制台打印如下
二、排序思路
- 第 1 步:记下将要插入的数
insertVal。 - 第 2 步:记下将要插入的数前面一个数的下标
insertIndex,目的是为了insertVal和l[insertIndex]做比较。 - 第 3 步:当
insertVal比l[insertIndex]小时(准备升序,反之为降序),把比插入数要大的数向后移动一位,同时指针insertIndex也后移一位。 - 第 4 步:最后把将要插入的数
insertVal赋值到合适的位置即可。
你的问题得到解决了吗?欢迎在评论区留言。
赠人玫瑰,手有余香,如果觉得文章不错,希望可以给个一键三连,感谢。
结束语
技术是一点一点积累的,大神也不是一天就可以达到的。原地不动就是退步,所以每天进步一点点。
最后,附上一句格言:"好学若饥,谦卑若愚",望共勉。