2020年12月16日

25*:排序算法:总结 (1、冒泡排序:2:选择排序:3、插入排序:4、希尔排序:5、堆排序:6、归并排序:7、快速排序:)

摘要: 问题 目录 1、冒泡排序:未排序区间两两交换找到最大值,排在最后,形成有序区间。稳定 2:选择排序:从未排序区间找最小元素,和排序区间的最后一个元素交换位置。 3、插入排序:从未排序区间依次取出元素插入到排序区间的适当位置。稳定 4、希尔排序:缩小增量排序 5、堆排序:完全二叉树大堆顶,交互堆顶和最 阅读全文

posted @ 2020-12-16 20:18 风zk 阅读(245) 评论(0) 推荐(0) 编辑

24*:排序算法7:快速排序(分区值,分而治之)

摘要: 问题 目录 预备 快排利用了分治的思想,分而治之,分治算法的基本思想是将一个规模为N的问题,分解成K个规模较小的子问题,这些子问题相互独立且问题性质相同。 求解出子问题的解,合并得到原问题的解。拆分问题总不可能手脚并用一个个拆分,因此分治算法大多采用递归实现。 正文 快速排序 1:算法描述 对A[p 阅读全文

posted @ 2020-12-16 19:07 风zk 阅读(295) 评论(0) 推荐(0) 编辑

23*:排序算法6:归并排序(两两分而治之。稳定)

摘要: 问题 目录 预备 冒泡,选择和插入排序,它们的时间复杂度都是O(n2),比较高,适合小规模数据的排序;希尔排序和快速排序都不稳定,这篇我们来说说稳定的归并排序。归并排序在数据量大且数据递增或递减连续性好的情况下,效率比较高,且是O(nlogn)复杂度下唯一一个稳定的排序,致命缺点就是空间复杂度O(n 阅读全文

posted @ 2020-12-16 19:05 风zk 阅读(746) 评论(0) 推荐(0) 编辑

22*:排序算法5:堆排序(完全二叉树大堆顶,交互堆顶和最后元素,找到最大元素。递归依次排序。)

摘要: 问题 目录 预备 正文 一:什么是堆? 1:定义 堆(英语:Heap)是计算机科学中的一种特别的完全二叉树,满足特性"给定堆中任意节点P和C,若P是C的母节点,那么P的值会小于等于(或大于等于)C的值"。 摘自维基百科。 首先堆是一个完全二叉树(除了最后一层,其他层的节点个数都是满的,最后一层的节点 阅读全文

posted @ 2020-12-16 17:57 风zk 阅读(252) 评论(0) 推荐(0) 编辑

21*:排序算法4:希尔排序(缩小增量排序)

摘要: 问题 //起始间隔值gap设置为总数的一半,直到gap==1结束 -(void)shellSort:(NSMutableArray *)list{ int gap = (int)list.count / 2; while (gap >= 1) { for(int i = gap ; i < [lis 阅读全文

posted @ 2020-12-16 16:49 风zk 阅读(191) 评论(0) 推荐(0) 编辑

20*:排序算法3:插入排序(从未排序区间依次取出元素插入到排序区间的适当位置。稳定)

摘要: 问题 -(void)insertSequence:(NSMutableArray *)arr { for (int i = 1; i<arr.count; i++) { int a=[arr[i] intValue]; int k = i; while (k>0&&[arr[k] intValue] 阅读全文

posted @ 2020-12-16 16:23 风zk 阅读(148) 评论(0) 推荐(0) 编辑

导航