随笔分类 -  算法基础

摘要:标签: 算法基础 1. 算法简介 快速排序 ,正如其名字一样,是排序算法中 速度较快 的一种排序,算法复杂度为$O(n logn)$。 排序过程中会打乱元素的相对位置,是 不稳定排序 。 算法思想 :选定一个pivot,把元素分为两组,一组比pivot小,一组比pivot大,然后按照相同的方法处理这 阅读全文
posted @ 2017-04-02 23:37 斑鱼 阅读(15230) 评论(4) 推荐(1)
摘要:1. 开放定址法 线性探测再散列,二次探测再散列,伪随机探测再散列。 2. 重哈希法 多个哈希方法,如果第一下哈希不能找到空位放置,则采用第二个,第三个哈系方法计算,直到没有冲突发生为止。 3. 链地址法 JDK的HashMap中采用的方法。如哈希时发生冲突,在哈希到的位置上建立 链表 ,在java 阅读全文
posted @ 2017-03-23 10:12 斑鱼 阅读(265) 评论(0) 推荐(0)
摘要:标签: 算法 复杂度分析 1. 主定理定义 以下是评估递归时间复杂度的 主定理 ,例如有递归形式 $$T(n) = aT(n/b) + f(n)$$ 其中, $a≥1$和$b≥1$, 均为常数, $f(n)$是一个确定的正函数。 在$f(n)$的三类情况下, 我们有$T(n)$的渐近估计式: 1. 阅读全文
posted @ 2017-03-21 10:22 斑鱼 阅读(1414) 评论(0) 推荐(0)
摘要:标签: 编程基础 算法 排序 java 编程中经常遇到的基础算法中不外乎是顺序查找,二分查找,哈希表查找,二叉排序树查找几种。下面详细总结一下这几种排序。 1. 顺序查找 顺序查找是最简单的查找算法。思想是从第一个元素开始,一个一个往下比较,找到与键值匹配的元素即可返回。可以实施在链表或者数组上。在 阅读全文
posted @ 2017-03-19 11:32 斑鱼 阅读(208) 评论(0) 推荐(0)
摘要:标签:编程基础 算法 树 Java 1. 先序遍历二叉树 递归解法。 思路很简单,先访问当前节点,然后递归访问当前节点的左右子树。 非递归解法。思路是利用 栈结构 模拟递归调用时的现场还原,步骤如下: (1)访问当前节点(do something),把当前节点压栈,并循环进入左子树; (2)当左子树 阅读全文
posted @ 2017-03-18 09:24 斑鱼 阅读(264) 评论(0) 推荐(0)