Flutter Dart快速排序算法示例详解

2023-12-05 0 331
目录
  • 引言
  • 快速排序算法
  • 分治法(Divide and conquer)
  • 快速排序算法实现

引言

在日常研发的过程中,我们无时无刻都在考虑自己开发的程序是否高效,一段好的程序执行离不开对算法的深刻认识和熟练掌握。接下来的日子,我将带着大家一起重温一下常见的几种算法。

先上大图:

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基于DartUnwrappingMultipleOptional小技巧
  • SafeList in Flutter and Dart小技巧
  • Dart多态控制反转编码规范实例详解
  • Dart多个future队列完成加入顺序关系及原子性论证
  • Dart 异步编程生成器及自定义类型用法详解
  • Dart语法之变量声明与数据类型实例详解
  • Flutter入门学习Dart语言变量及基本使用概念
  • 一文详解Dart如何实现多任务并行

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 Dart Flutter Dart快速排序算法示例详解 https://www.u-9.cn/biancheng/dart/98212.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务