
算法
文章平均质量分 74
半路出Java
这个作者很懒,什么都没留下…
展开
-
选择排序---每次都是最优解
选择排序---每次都最选好的1,思路选择排序基于一种简单的思路:每一次选择都选最小的,直到把所有的数据都排完。例如:对于如下【0,9】随机数组 [8, 6, 3, 5, 9, 1, 0, 4, 2, 7]你结果知道排序结果是[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]对于任何数组,实际上数组下标本身就是一个排序第一位第二位………第N位那么选择排序的过程是怎样的呢?简单来说,排序过程...原创 2018-05-10 23:31:50 · 1364 阅读 · 0 评论 -
插入排序---一步步接近真相
插入排序---一步步接近真相1. 思路插入排序基于一种简单的思路:把数组分为左右两个部分,左侧为有序数组,右侧为无序数组,把右侧的无序数组,一个一个的插入到左侧的有序数组中,从而步步为营的完成排序。排序过程如下:① 第2位与第1位比较,如果比第一位小就换位置 ② 第3位与第2位比,如果比第2位小就换位置,第2位再与第1位比较,如果比第1位小就换位置. …….③ 直到最后一位 2. ...原创 2018-05-12 08:31:49 · 216 阅读 · 0 评论 -
希尔排序---插入排序的预处理
1. 思路分析 上文我们提到插入排序对有序序列性能很高,在最后一节优化的部分,也提到了,如果能对序列先做些处理,使其局部有序,从而可以很大程度上提高插入排序的性能.希尔排序就是基于这一思路扩展而来。我们还发现,插入排序还有一个问题就是交换次数太多,他是从右至左逐个比较,逐个交换,对于倒序序列,性能最差。希尔排序改进了这种操作,对于给定的任意数组从逻辑上进行重新分组,使其成为跨度较大的...原创 2018-05-12 22:12:42 · 229 阅读 · 0 评论 -
归并排序---天下大事,合久必分,分久必合
1. 思路归并排序基于分治思想,即先把复杂的大问题分割成多个简单的小数据,然后逐个击破,从而达到解决问题的目的。他非常符合中国人的思维习惯:大事化小,小事化了。下面用一张图来描述这个过程:蓝色为分解为分解过程,绿色为合并过程。数组在分解过程中,几乎没有任何操作,所有的比较,交换操作都在合并过程中。我们在这里主要讨论一下合并的过程,这是归并算法的核心逻辑部分。我们之前已经了解了插入算法,并且知道插入...原创 2018-05-13 11:58:26 · 1105 阅读 · 0 评论 -
快速排序---左右互搏(换)术
1. 思路快速排序基于这样一种想法:给定一个序列,排完之后,数据小的一定在左侧,数据大的一定在右侧。根据这一特性,随机的在序列中取一个数k,只需要把比这个数大的数据换到右侧,比这个数小的数据换到左侧,就完成了一次排序。然后以k为中心,将数组分成两部分,再分别对这两部分做如上操作,直到排完成个序列。这种策略很像老顽童的左右互搏术,或者乾坤大挪移之类的功法,说白了就是来回倒腾。接下来我们简单描述一下排...原创 2018-05-14 23:10:28 · 384 阅读 · 0 评论