算法与数据结构
OOM_and_Exception
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构算法之字符串
字符串特点字符串是由若干个字符组成,在c/c++中常常使用‘/0’字符作为结尾,这样很方便的为我们查找到字符串的最后一个字符。为了节省空间,c/c++常常将字符串单独放到一个内存空间中,当几个指针赋予相同的变量时,实际上他们会指向相同的地址空间面试题:替换空格实现一个函数将字符串中的空格替换成"%20"实现方式:方式一:如果是创建新的字符串,并在新的字符串上做替换,则我们需要我们为其分配足原创 2017-08-09 10:57:26 · 225 阅读 · 0 评论 -
数据结构与算法之图计算
图算法,在实际的编程中还是会经常遇到的,最主要的就是两种图的遍历算法。举个例子,Java程序员必须掌握的垃圾回收(Garbage Collection,GC)里面,就非常依赖图算法。所以,在讨论GC之前,我们必须先把图的知识掌握了。图的概念在图中的数据元素通常称为结点,V是所有顶点的集合,E是所有边的集合。 如果两个顶点v, w,只能由v向w,而不能由w向v,那么我们就把这种情况叫做一个从 v原创 2017-08-10 15:43:30 · 1589 阅读 · 0 评论 -
数据结构与算法之栈和队列
栈和队列特点栈是一种先进后出的结构,队列是一种先进先出的结构栈通常不考虑排序,需要O(n)的时间复杂度才能找到栈中最大或者最小的数据面试题用两个栈实现队列import java.util.Stack; //使用栈记得引用java.util,Stack包 public class Solution { Stack<Integer> stack1 = new Stack<Integer转载 2017-08-09 11:32:44 · 290 阅读 · 0 评论 -
数据结构与算法之动态规划
动态规划的Java实现转载 2017-08-09 21:05:57 · 302 阅读 · 0 评论 -
数据结构与算法之动态规划和贪心
动态规划####动态规划######一、算法思想贪心法的基本思路:——从问题的某一个初始解出发逐步逼近给定的目标,以尽可能快的地求得更好的解。当达到某算法中的某一步不能再继续前进时,算法停止。 该算法存在问题: 1. 不能保证求得的最后解是最佳的; 2. 不能用来求最大或最小解问题; 3. 只能求满足某些约束条件的可行解的范围。实现该算法的过程:从问题的某一初始解出发; while 能朝给转载 2017-08-09 15:51:59 · 442 阅读 · 0 评论 -
数据结构与算法之各种排序算法的复杂度
排序法 平均时间 最差情形 稳定度 空间复杂度 备注 冒泡 O(n2) O(n2) 稳定 O(1) n小时较好 交换 O(n2) O(n2) 不稳定 O(1) n小时较好 选择 O(n2) O(n2) 不稳定 O(1) n小时较好 插入 O(n2) O(n2) 稳定 O(1) 大部分已排转载 2017-08-09 15:28:10 · 418 阅读 · 0 评论 -
数据结构与算法之二分查找
说明二分查找是一种比较有效的查找方式,折半查找的思想是,首先将数据有序排列(递增或者递减),查找过程中采用跳跃式查找,如果要找的元素值小 于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。通过一次比较,将查找区间缩小一半。 折半查找是一种高效的查找方法。它可以明显减少比较次数,提高查找效率。但是,折半查找的先决条件是查找表中的数据元素必须有序。优点:查找次数比较少,效率较高,经log2n转载 2017-08-09 15:10:27 · 350 阅读 · 0 评论 -
数据结构与算法之二叉树
二叉树二叉树中最重要的就是遍历,常见的遍历方式:前序遍历:先访问根节点,在访问左节点,最后访问右节点。如图的顺序是:10,6,4,8,14,12,16中序遍历:先访问左节点,在访问根节点,最后访问右节点。如图的顺序是:4,6,8,10,12,14,16后序遍历:先访问左节点,在访问右节点,最后访问根节点。如图的顺序是:4,8,6,12,16,14,10 推导已知前序、中序,可以唯一确定一个二转载 2017-08-09 14:27:30 · 250 阅读 · 0 评论 -
数据结构与算法之数组
数组特点 1. 数组是一种最简单的数据结构,它占据一块连续的内存并且顺序存储数据,所以我们需要首先指定数组的大小; 2. 数组的空间效率不是很好,会有空闲的区域没有得到充分的应用; 3. 时间复杂度为O(1);数组实现简单哈希表将数组中的下标设置为hash的key,将数组中的值设置为哈希的值,这样就是实现了简单的hash表形成了一组k/v对。解决数组空间效率不高的问题设计了多种动态数组,比如原创 2017-08-09 10:44:21 · 3458 阅读 · 1 评论 -
数据结构与算法之链表
链表特点链表的结构简单,由指针将若干个节点连接起来形成链式结构。链表是一个动态的数据结构,我们无需知道链表的长度,只需要为新节点分配空间,然后调整指针的指向,确保新的节点加入到链表中即可。空间效率比数组高。链表的空间不是一次性分配完的,所以我们不需要保证链表的空间和数组的空间一样是连续的。如果我们需要查找一个元素,那么我们必须从开头一个一个查找,直到最后查找到的元素,所以时间复杂度为O(n)转载 2017-08-09 11:13:20 · 206 阅读 · 0 评论 -
十大算法题
算法一:快速排序算法快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。快速排序使用分治法(Divide and conquer)策略来把一个串行(l原创 2017-08-10 23:29:56 · 321 阅读 · 0 评论
分享