04 2018 档案
用分解的方式学算法005——快速排序
摘要:如果在各种排序算法中,只学一种,那这种算法就是快速排序。 正如它的名字,快速排序很快速,性能很好。而它也被评为“二十世纪十大最伟大的算法”之一。 下面就来学习一下这个算法到底是怎么样的吧。 直接给出一种实现代码: private int Division(int[] list, int left, 阅读全文
posted @ 2018-04-15 15:26 Sempron2800+ 阅读(210) 评论(0) 推荐(0)
用分解的方式学算法004——归并排序
摘要:归并排序的核心操作,是将两个有序数组归并成一个更大的有序数组。 在这种思想下,通过递归的方式进行处理,就得到了归并排序。 首先我们写一个用来将两个有序数组归并(合并)为一个大数组的方法。 public static void MergeTwoArray(int[] a,int[] b,int[] c 阅读全文
posted @ 2018-04-13 21:03 Sempron2800+ 阅读(143) 评论(0) 推荐(0)
用分解的方式学算法003——希尔排序
摘要:希尔排序是插入排序的一个变种。对于大规模乱序数组插入排序很慢,因为它只会交换相邻的元素,因此元素只能一点一点地从数组的一端移动到另一端。希尔排序为了加快速度简单地改进了插入排序,交换不相邻的元素以对数组的局部进行排序,并最终用插入排序将局部有序的数组排序。 先看一段希尔排序的实现的代码: publi 阅读全文
posted @ 2018-04-12 23:22 Sempron2800+ 阅读(130) 评论(0) 推荐(0)
用分解的方式学算法002——插入排序
摘要:本篇介绍第二种排序算法,插入排序。 插入排序一般举的例子是“整理手牌”,从牌堆中摸一张牌,放在手里,按照顺序整理好,一般是将新摸到的牌和手中已有的牌依次比较,可以从小到大也可以从大到小。然后选择合适的位置“插入”。 先看完整的代码实现,这个代码是从大到小(逆序)的方式进行比较的: public st 阅读全文
posted @ 2018-04-11 14:32 Sempron2800+ 阅读(155) 评论(0) 推荐(0)
用分解的方式学算法001——选择排序
摘要:我们在学习算法时,经常遇到的一个问题是,看的懂但是写不出来。究其原因,是没有理解到位。 那么怎么才能理解到位呢?我认为关键是“分解”,就是把算法中的节点按层次和步骤分解出来。 一步一步的实现。 今天先来分解一下排序算法中的一个算法——选择排序。 为什么叫选择排序呢? 一种最简单的排序算法是这样的:首 阅读全文
posted @ 2018-04-11 10:49 Sempron2800+ 阅读(163) 评论(0) 推荐(0)