
算法积累
文章平均质量分 61
Android之禅
和你分享有价值有思考的技术文章。
公众号 “Android之禅”
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【排序算法】——堆排序
场景:代码实现堆排序,选择使用Java代码思路:分成以下两个步骤建堆:从下往上建立,从数组的中间开始建并不断调整堆交换堆顶调整堆:把堆顶元素放到当前堆最后面并不断调整堆代码实现public class HeapSort { /** * @param args */ public static void main(String[] args) { // TO原创 2015-09-27 15:59:55 · 1153 阅读 · 0 评论 -
【排序算法】——快速排序
场景:代码实现堆排序,选择使用Java代码思路:每一趟快排之后得到一个元素,其左边所有元素都小于该元素,其右边所有的元素都大于该元素,并对两边再进行一趟排序,递归操作。代码实现package Sort;public class QuickSort { /** * @param args */ public static void main(String[] args)原创 2015-09-27 16:06:39 · 1214 阅读 · 0 评论 -
【排序算法】——归并排序
场景:代码实现堆排序,选择使用Java代码思路:把待排数组平均分成两组,递归分组,直到每一组剩下一个元素后,两两数组进行有序合并。代码实现package Sort;/** * @author yummy */public class MergeSort { /** * @param args */ public static void main(Str原创 2015-09-27 16:38:08 · 1296 阅读 · 0 评论 -
【二叉树遍历算法】——广/深度优先搜索的实现
广度和深度优先搜索一般都是用于图的遍历,树也有,这里实现的是二叉树的广度和深度优先搜索。主要使用伪代码的方式实现,掌握基本的思想和过程即可,对应具体的编程语言实现起来也就大同小异了。深度优先搜索void depthSearch(BiTree T){ InitStack(S); Push(S,T) while(!StackEmpty(S)){ Pop(S,p); visit(p原创 2015-10-17 13:37:36 · 1644 阅读 · 0 评论 -
【因子算法】——求一个数的因子、质因子、求两个数的公因子
下面理清楚一些数学概念:因数:一个数,如果存在可以被它整除的数,则这些数都是该数的因数。规定0没有因数,1的因数是1,其他的比如4的因数有“1”、“2”、“4因子:一个数,如果存在可以被它整除的数且这些数不包括它本身,则这些书都是该数的因子。规定0没有因子,1的因子是1,其他的比如4的因子有“1”、“2”质因子:一个数,如果可以分解成n个质数相乘,则n个质数成为该数的质因子。原创 2015-10-02 17:09:17 · 20409 阅读 · 1 评论 -
【约数倍数算法】——求最大公约数、最小公倍数
场景一:输入两个数n和m,求n和m的最大公约数思路:有辗转相除法和迭代相减法。当n和m大小相近的是否,两个算法所耗费的时间基本相同;先大小相差很大的是否,前者表现的性能远高于后者。代码实现(java)/** * 辗转相除法 * @param n 参数1 * @param m 参数2 * @return 最大公约数 */ public static int getG原创 2015-10-01 17:56:22 · 1878 阅读 · 0 评论 -
【质数算法】——判断质数、求小于N的质数、求前N个质数
质数(prime number)又称素数,一个大于1的自然数,除了1和它本身外,不能被其他自然数整除。场景一:输入一个整数n,判断n是否为质数。思路:判断是否大于或等于2,如果是则对遍历2到根号n区间的所有奇数取余是否为0,如果全都不是则为质数。事实上取余的区间可以更小,缩小为2到根号n区间的所有质数,但这以为着会牺牲空间记录下来,有得有失。目前最优的通用算法代码实现(java)/原创 2015-10-01 17:48:01 · 4300 阅读 · 0 评论 -
【字符串算法】——KMP算法、压缩字符串、字符串镜像、翻转字符串
场景一:输入字符串s和字符串subs,输出串subs在串s中匹配成功时的位置。思路:设s长度为n,subs长度为m,如果暴力遍历,则时间复杂度为n(m*n);如果使用KMP算法,则时间复杂度为n(m+n)。推荐一篇文章:KMP算法的next[]数组通俗解释 这篇文章是我学习kmp算法中感觉最通俗易懂的文章。代码实现(java): /** * Next数组表示:当与匹配串匹配到位原创 2015-10-04 17:34:48 · 2928 阅读 · 0 评论 -
【二叉树遍历算法】——前/中/后序递归与非递归的实现
昨天面试了美团,面试官要求写出二叉树的中序遍历,要求实现递归与非递归方式。在写非递归的时候,一个while循环中忘记控制空指针,╮(╯▽╰)╭当时脑子一片空白不在状态。回来后告诉自己,这类问题以后绝不会发生!下述6种实现方法希望大家都能理解,并快速能手写代码出来。(理解,懂得思路才是王道,因为面试的时候人的情绪相对来说是比较紧张,需要掌握得更熟悉)先(前)序递归遍历void preorde原创 2015-10-17 11:07:34 · 1495 阅读 · 0 评论