脚本之家(jb51.cc)算法栏目主要收集统计算法、大数据算法等资料。
对于Java程序员来说(可能是所有编程语言的程序员),算法和数据结构这个东西平时工作中用的的确不多。读书的时候在一家公司实习,那边带我的导师直接跟我说算法不重要,用的不多。这话可能是实话,毕业到现在已
面试必备:数据结构时间复杂度及用法大全
主要讲解哈希表原理、冲突、扩容的相关知识
堆(Heap)是一种重要的数据结构,是实现优先队列(Priority Queues)首选的数据结构。
宽度优先搜索,又称BFS,在面试中出现频率仅次于双指针,由于其上手快,难度较低,性价比很高!推荐各位同学们优先掌握。
面试刷人利器 -- 深度优先搜索
手把手带你入门动态规划
最常见的动态规划-01背包
双指针算法:同向双指针模板以及相关面试题
动态规划:国内必考的算法题
四种低于O(N)的算法
二叉查找树的增删查改
数据结构和算法(第 1 章):什么是数据结构和算法
不知道你有没有这样的疑惑?为什么一说数据结构或者算法,它们总是会同时出现,这不应该是两门课吗?为什么要整合到一起呢?接下来我们就带着问题去了解一下数据结构和算法之间的关系。一、数据结构和算法之间的关系什么是数据结构?什么是算法?你去百度肯定能得到一堆结果,但这些搜索出来的结果根本就不是人能看懂的。所谓定义就是把所有人能看懂的问题说成谁也看不懂的词。其实,这样是没办法的事。为了定义的明确和严谨,就得加很多限制条件,这样就不会让定义模棱两可,但是这样做的结果就是谁也看不懂。下面我们就试着还原数据结构
一、复杂度分析首先要明确一点,数据结构和算法本质是解决“快”和“省”的问题。要描述一个算法的好坏就需要用到复杂度分析了,复杂度分析可分为如下两种。时间复杂度空间复杂度时间复杂度就是描述算法的快,空间复杂度则是描述算法的省。一般说的复杂度都是时间复杂度,毕竟现代计算机存储空间已经不那么拮据了,时间复杂度是我们重点研究的内容。二、大 O 复杂度表示法首先看一段代码,求从 1~n 的累加之和。int demo(int n) { int i; int sum = 0;.
一、多级分类问题在实际开发的过程中,会经常遇到多级分类的问题。譬如,导航栏、菜单、商品种类、多级联动、字典表等等的多级分类问题。这时可以新增一个 pid 字段进行数据关联,它本质上其实就是一棵树。树就可以很好的解决多级分类的子分类查询。但是这种方式有一个致命的问题:查询效率过低!!!当我们在程序里查询某个子节点时,要先从根节点进行递归查询,时间复杂度是 O(n)。那么有没有一种方式,改进树的查询效率呢?答案是肯定的!很多树都在标准的树上进行改进过,比如二叉树、红黑树、堆等等。但这都不是重点,今天要
集合是数据结构中基本的结构,它完全和数学中的集合一致,那下面就来看下数学中的集合到底是什么?一、集合是什么集合是指具有某种特定性质的具体的或抽象的对象汇总而成的集体。其中,构成集合的这些对象则称为该集合的元素。举几个例子,如果以人类为一个集合,中国人就是该集合中的一个元素。如果以 0-100 的自然数为一个集合,0 就是该集合中的一个元素,记作 0∈100,101 不是该集合中的元素,就记作 0∉100。 更详细的请打开高数(一)第一章仔细看看。二、集合的特性集合有下面三个特性:确定性: 给
内存堆和栈的区别 原文: http://student.csdn.net/link.php?url=http://www.top-e.org%2Fjiaoshi%2Fhtml%2F427.h
常用的算法的时间复杂度和空间复杂度 排序法 最差时间分析 平均时间复杂度 稳定度 空间复杂度 冒泡排序 O(n2) O(n2) 稳定 O(1) 快速排序 O(n2) O(n*log2n) 不稳定 O(
package main import ( "fmt" ) type ListNode struct { Val int Next *ListNode } type List st
经典的排序算法的总结 0、算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时
布隆过滤算法体会(BlooomFilter) Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这
有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有
最近复习了下数据结构中的哈希表,发现在计算等概率情况下查找不成功的平均查找长度时比较迷茫,不知道到底是怎么计算出来的。现在通过查阅资料终于知道如何计算了,所以记录下来以供以后查阅。 下面看下2010年
计算斐波那契数 【lintcode】366 描述 查找斐波纳契数列中第 N 个数。 所谓的斐波纳契数列是指: 前2个数是 0 和 1 。 第 i 个数是第 i-1 个数和第i-2 个数的和。 斐波纳契
1.二分搜索树特点:每个节点的键值大于左孩子; 每个节点的键值小于右孩子;以左右孩子为根的子树仍为二分搜索树 ;不是完全二叉树2.优势:高效,不仅可以查找数据;还可以高效的插入,删除数据-动态维护数据
【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:兔子的规律为数列1,1,
一,单路快排1.测试用例: 2.归并排序: 3.优化时要用的插入排序: 4.单路快排实现: 图解单路快排: 5.单路快排的测试结果: 可见单路快排在随机测试和近乎有序的情况下效率是完全可以接受的,但是
【程序9】 题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3。编程找出1000以内的所有完数 //第一种public class A09 {publi
原理: 设两个有序的子序列(相当于输入序列)放在同一序列中相邻的位置上:array[low..m],array[m + 1..high],先将它们合并到一个局部的暂存序列 temp (相当于输出序列)