【Flutter之Dart算法】冒泡排序算法
每日一新,共同前进。
大家好,我是Asscre。
在日常研发的过程中,我们无时无刻都在考虑自己开发的程序是否高效,一段好的程序执行离不开对算法的深刻认识和熟练掌握。接下来的日子,我将带着大家一起重温一下常见的几种算法。
【Flutter之Dart算法】系列二 冒泡排序算法
描述:
冒泡算法,将数组中前后两个元素进行比较,根据排序规则进行大小交换,最后得到一个从小到大或者从大到小的数组;通过冒泡排序处理的时间复杂度为 O(n^2)
实现步骤:
- 前后两个元素进行比较,根据排序规则进行大小交换
- 依次向后移动
冒泡排序算法实现
void main() {
List<int> ary = [4, 5, 1, 3, 6, 2, 5, 6, 7, 2, 4, 1];
print(bubbleSort(ary));
}
//冒泡排序
List<int> bubbleSort(List<int> arr) {
for (int i = 0; i < arr.length; i ) {
for (int j = i 1; j < arr.length; j ) {
if (arr[i] > arr[j]) {
int iv = arr[i]; // 深拷贝
arr[i] = arr[j];
arr[j] = iv;
}
}
}
return arr;
}
结果:
拓展知识点:
Dart 语言中的深拷贝和浅拷贝
首先我们需要先了解:深拷贝和浅拷贝区别是,在有指针的情况下,浅拷贝只是增加了一个指针指向已经存在的内存,而深拷贝就是增加一个指针并且申请一个新的内存,使这个增加的指针指向这个新的内存,采用深拷贝的情况下,释放内存的时候就不会出现在浅拷贝时重复释放同一内存的错误。
void main() {
int a = 1;
int b = 2;
int c = a;
print('修改之前:a: $a, b:$b, c:$c');
c = 3;
void setB(int value) {
value = 4;
}
setB(b);
print('修改之前:a: $a, b:$b, c:$c');
int d = 4;
int e = d;
print('修改之前: e:$e');
d = 5;
print('修改之后:e:$e');
List<int> arr = [1, 2, 3, 4];
List<int> ary = arr;
List<int> arx = [...arr];
arr[0] = 5;
print('arr: $arr');
print('ary: $ary');
print('arx: $arx');
}
结果:
通过上述代码,我们可以得知:
- 简单类型中,如int,通过赋值的方法为深拷贝;
- 复杂类型中,如List,通过赋值的方法为浅拷贝;
- 复杂类型中,如List,可以通过 ... 进行深拷贝;
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanfbaie
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
photoshop蒙版画笔没反应怎么办
PHP中文网 06-24