Flutter Dart快速排序算法示例详解
作者:Asscre
这篇文章主要为大家介绍了Flutter Dart快速排序算法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
在日常研发的过程中,我们无时无刻都在考虑自己开发的程序是否高效,一段好的程序执行离不开对算法的深刻认识和熟练掌握。接下来的日子,我将带着大家一起重温一下常见的几种算法。
先上大图:
下面我们一起来学习一下
快速排序算法
吧!
快速排序算法
维基百科介绍: 快速排序使用分治法(Divide and conquer)策略來把一个序列(list)分为较小和较大的2个子序列,然后递归地排序两个子序列,最终合并得到一个从小到大的序列。
有聪明的小伙伴就会问了:什么是分治法策略呢?
分治法(Divide and conquer)
字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。
由此就可以引出我们今天讲的
快速排序算法
的实现步骤了:
-
从数据中随机获取一个值,按这个值的大小对比分成左右两个数据集合,左边数据集合的值小于此值,右边反之
-
将两边数据进行
递归
调用步骤1
-
将所有数据合并
快速排序算法实现
void main() {
List<int> quickSort(List<int> arr) {
// 处理边界问题
if (arr.length <= 1) {
return arr;
// 取出第一个值作为参考
int splitData = arr[0];
// 小于参考值的集合
List<int> low = [];
// 大于参考值的集合
List<int> hight = [];
// 与参考相等的集合
List<int> mid = [];
// 初次把参考值添加到mid中
mid.add(splitData);
for (int i = 1; i < arr.length; i++) {
if (arr[i] < splitData) {
// 小于
low.add(arr[i]);
} else if (arr[i] > splitData) {
// 大于
hight.add(arr[i]);
} else {
// 等于
mid.add(arr[i]);
// 二分数据后,再继续递归整理
low = quickSort(low);
hight = quickSort(hight);
// 最后合并
return [...low, ...mid, ...hight];
const List<int> ary = [4, 5, 1, 3, 6, 2, 5, 6, 7, 2, 4];
print(quickSort(ary));
至此,我们就重新温习了一下 快排算法 !
更多关于Flutter Dart快速排序算法的资料请关注脚本之家其它相关文章!
您可能感兴趣的文章:
Flutter SizedBox布局组件Widget使用示例详解2023-02-02
Dart多态控制反转编码规范实例详解2022-11-11
Flutter入门学习Dart语言变量及基本使用概念2022-09-09
flutter中如何使用和扩展ThemeData实现详解2022-11-11
Flutter SizedBox布局组件Widget使用示例详解2022-11-11
Flutter 图片开发核心技能快速掌握教程2022-11-11
Flutter Dart快速排序算法示例详解2022-11-11
Dart多态控制反转编码规范实例详解2022-11-11
美国设下计谋,用娘炮文化重塑日本,已影响至中国2021-11-19
时空伴随者是什么意思?时空伴随者介绍2021-11-09
工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终2021-11-05
2022年放假安排出炉:五一连休5天 2022年所有节日一览表2021-10-26
电脑版 - 返回首页
2006-2023 脚本之家 JB51.Net , All Rights Reserved.
苏ICP备14036222号