2017年8月9日

[原创]快速排序(C++版)

摘要: 快速排序时间复杂度:O(N*log2 N)空间复杂度:O(1)不稳定。 这个算法我试过针对单链表进行实现,但发现由于单链表从表尾反向遍历不方便,因此该算法不适合针对单链表进行实现, 下面我实现经典的场景:针对数组来实现该算法。 这里我只是用C++来实现了该算法,后面有机会我会写一篇java版的实现博 阅读全文

posted @ 2017-08-09 17:56 最快的方法就是最慢 阅读(510) 评论(0) 推荐(0) 编辑

[原创]堆排序(C++版)

摘要: 堆排序 时间复杂度:O(N*log2N)空间复杂度:O(1)不稳定的 下面的方式我是通过向下调整创建大根堆,然后通过向下调整进行堆排序。 另外还可以通过向上调整,以及创建小根堆的方式来进行堆排序,下面我只列出向上调整的方法函数,至于如何通过向上调整以及创建小根堆来实现堆排序,后面有机会再补充完善在该 阅读全文

posted @ 2017-08-09 17:46 最快的方法就是最慢 阅读(207) 评论(0) 推荐(0) 编辑

[原创]二路归并排序针对单向链表的场景(java版)

摘要: 二路归并排序最常用的场景是数组,那么如果数据结构采用单向链表呢?如何实现? 基本思想是一样的,对比数组场景,需要注意一下几点: ①在合并阶段:merge(..)合并两个已经有序的链表时,要比数组更简单些; ②在递归调用阶段:mergeSort(...),在该方法里,和数组一样需要确定中间位置,然后分 阅读全文

posted @ 2017-08-09 17:31 最快的方法就是最慢 阅读(680) 评论(0) 推荐(0) 编辑

[原创]二路归并排序针对数组的场景(C++版)

摘要: //二路归并排序时间复杂度O(N*log2N)空间复杂度O(n) 稳定的 int n = 10; int* B = (int*)malloc((n + 1)*sizeof(int)); void merge(int A[], int low, int mid, int high){ int i, j 阅读全文

posted @ 2017-08-09 17:08 最快的方法就是最慢 阅读(235) 评论(0) 推荐(0) 编辑

[原创]装饰模式(java版)

摘要: 1、什么是装饰模式? 动态的给一个对象添加额外的一些功能的方式,就增加功能来说,比子类继承要更加灵活。 添加额外功能可以通过set方法的方式传递进来一个需要被修饰的对象,或者通过构造函数传参的方式传入要被修饰的对象: java代码描述: //抽象构建 public abstract class Co 阅读全文

posted @ 2017-08-09 10:30 最快的方法就是最慢 阅读(186) 评论(0) 推荐(0) 编辑

导航