维C果糖的博客

好学若饥,谦卑若愚。

详述「设计模式」及其 Java 实现

温馨提示:此项目的 GitHub 地址为「design-pattern」,欢迎感兴趣的同学Star、Fork,纠错。 设计模式首先,我们来看看百度和维基百科对设计模式的解释: 百度百科:设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。 Wikipedia:A desi...

2017-10-18 18:05:56

阅读数:2089

评论数:8

来自「Head First 设计模式」的程序设计原则

设计原则: 第 1 个原则:找出应用之中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。 第 2 个原则:针对接口编程,而不是针对实现编程。 第 3 个原则:多用组合,少用继承。

2017-08-05 20:39:18

阅读数:945

评论数:0

浅谈:模板方法模式(Template)

模板方法模式是一种基于继承的代码复用技术,它是一种类行为型模式。模板方法模式是结构最简单的行为型设计模式,在其结构中只存在父类与子类之间的继承关系。

2017-01-07 16:02:07

阅读数:434

评论数:0

浅谈:单例设计模式(Singleton)

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。简单点说,设计模式就是对问题行之有效的解决方式,是一种思想。单例设计模式就是保证一个类在内存中的对象唯一性。比如,在多个程序使用同一个配置对象信息时,就需要保证该对象的唯一性。

2017-01-04 22:46:03

阅读数:667

评论数:0

堆排序(HeapSort)

堆是一种重要的数据结构,分为大根堆和小根堆,是完全二叉树, 底层如果用数组存储数据的话,假设某个元素为序号为i(Java数组从0开始,i为0到n-1),如果它有左子树,那么左子树的位置是2i+1,如果有右子树,右子树的位置是2i+2,如果有父节点,父节点的位置是(n-1)/2取整。最大堆的任意子树...

2016-11-12 06:09:03

阅读数:693

评论数:2

归并排序(MergeSort)

归并排序是建立在归并操作上的一种有效的排序算法,该算法和快速排序都是采用分治法来设计算法的,区别在于归并排序把数组分为两个基本等长(最多相差一个元素)的子数组,分别排好序之后还要进行归并操作,而快速排序在拆分子数组的时候则有所不同,其取一个基准元素,拆分之后基准元素左边的元素都比基准元素小,右边的...

2016-11-11 10:56:14

阅读数:510

评论数:0

快速排序(QuickSort)

快速排序就是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序是一种不稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生...

2016-11-10 13:32:24

阅读数:759

评论数:0

插入排序(InsertSort)

对于一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到插入排序。插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、元素个数加1的有序数组,算法适用于少量数据的排序,时间复杂度为O(n^2),是稳定的排序方...

2016-11-09 14:08:29

阅读数:713

评论数:1

选择排序(SelectSort)

选择排序是一种简单直观的排序算法,它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。选择排序与冒泡排序非常的相似,都是一层层筑顶的过程,不同点在于冒泡排序会频繁的互换位置,而选择排序只是记录最大元素的位置,并与顶互换,只需交换...

2016-11-08 20:58:23

阅读数:586

评论数:0

冒泡排序(BubbleSort)

冒泡排序是一种比较简单的排序算法,它重复地走访要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,因此得名。

2016-11-08 10:40:29

阅读数:798

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭