
数据结构
文章平均质量分 72
小强的不死
这个作者很懒,什么都没留下…
展开
-
数据结构---简单排序(小数据,大复杂度)
排序真记不住各个名字是何方神圣,要是把具体操作说出来,其实也不难,比如冒泡,其实就是两两排序。排序看三个标准,时间复杂度,内存消耗空间复杂度,原地空间不动,无需其他空间,顶多用了temp;稳定不,同值,还会有可能给颠倒位置不,比如3跟3会有可能倒换位置不,就选择排序颠倒了位置。比如1,5,7,5,9,2;能不再排序for里面的语句尽量不要。虽然虚拟机编译器成机器码会优化,但是还是尽量自己做。编译器...原创 2018-10-15 22:05:01 · 185 阅读 · 0 评论 -
数据结构---堆应用
类似百度热点搜索。堆排序。多数据集(下面构造三个数据集合,没了再取),取极值(前十名) java.util.ArrayList<Integer> arrayListFirst = new java.util.ArrayList<Integer>(); arrayListFirst.add(1); arrayListFir...原创 2018-12-27 22:47:53 · 205 阅读 · 0 评论 -
数据结构---递归
递归,单个帧栈深度,方法栈深度考虑,阶层的话考虑,极值问题递归考虑两个点,一、递归的公式二、递归的终极条件 private int j = 0; public long doSomething(long i) throws Exception{ if(i>Long.MAX_VALUE)throw new java.lang.Exception("lon...原创 2018-12-10 21:55:34 · 145 阅读 · 0 评论 -
数据结构---图
图的两种表示方式,邻接表(点及点对应一级节点链表),邻接矩阵(多少个点即多少数组长度,二维)图的广度搜索(层层递进,最近距离,利用队列收集每一层的节点,遍历下一层节点),深度搜索(递归获取直属节点,终极节点为终结条件)public class TableGraph{ int pointCount; java.util.ArrayList<Integ...原创 2018-12-10 21:50:19 · 144 阅读 · 0 评论 -
数据结构---hashmap简易
数组+链表(可改造红黑树)根据id查询value值。快速import java.util.Arrays;public class HashMapDemo { public int DEFAULT_TABLE_LENGTH = 16; public double DEFAULT_LOAD_FACTOR = 0.75; public HashMapEntry[]...原创 2018-12-26 23:34:22 · 219 阅读 · 0 评论 -
数据结构---跳表改造
存储键值对id:value值存储100万数据对查询value区间,比如10到100;个数?查询id区间,比如10到100;个数?查询某id或某value,排名第几?在跳表实体加个索引号; SkipList skipList = new SkipList(); skipList.put(5, 5); skipList.put(55, 55)...原创 2018-12-26 21:52:33 · 162 阅读 · 0 评论 -
数据结构---跳表
ConcurrentSikpListMap:有序采用cas无锁机制保证多线程竞态条件;死循环+volatile(as if serial内存屏障)+cas(compareAndSwap)时间复杂度(假设是平分,总的个数是n,在真实的代码是随机产生level。哈哈复杂度由复杂了):第一层 0到n;第二层 0到n的一半,n的一半到n第三层 0到n的...原创 2018-12-13 22:34:20 · 208 阅读 · 0 评论 -
数据结构---散列(哈希)
总的思想:主干数组:无需多解释哈希计算:根据字节码内存地址计算哈希key:哈希与数组长度减一位与运算value:对应存储的值哈希冲突:这个区别各个帮派的地方;以下个帮派一、链表法HashMapfor (Entry<K,V> e = table[indexFor(hash, table.length)]; e != null; ...原创 2018-11-29 23:21:29 · 210 阅读 · 0 评论 -
数据结构--链表
根据定义,自己一步一步写代码,肯定写得出来总的思想,链表用一个类表示,链表节点用一个类,那链表都是由节点,还要写什么在链表里面?反过来想,怎么知道你这个链表是个啥,怎么起始。那就得找个头来带一下。有了头,就可以推倒下一个,下下一个。以此类推。java的话。我不叫指针,叫引用地址。这么以来链表有人引用。就不至于给垃圾回收。各个节点在堆里面飘。容易吗,没家可归啊。链表就是个头,或者个起始的标示...原创 2018-11-12 22:30:03 · 108 阅读 · 0 评论 -
数据结构---TimSort(jdk中Collection.sort/array.sort都是用了这算法)
有空再分析jdk源码原创 2018-11-01 23:54:29 · 303 阅读 · 2 评论 -
数据结构---红黑树
红黑树怎么来?历史缘由先说二叉树,父节点劈叉出两个节点,就两个,不可以多。这样一层一层下去。再说二叉查找树(基于二分查找),同样有上面的劈叉属性,但是呢左中右有大小顺序,左边小于中间,中间小于右边。接着就是红黑树,干嘛上面下来就红黑,二叉树如果不加以控制就成单边树了。因为二叉树没规定不可以单边开叉,而且一直往下开叉,5左单边4再左单边3,再左单边2,类似的就失去了二叉查找树的意义了。这...原创 2018-11-01 23:53:11 · 127 阅读 · 0 评论 -
数据结构---线性排序(规律数据,线性复杂度)
一、桶排序,按区间分割,桶里面存储相应数据,并采取相关排序算法排序,下面采用快速排序。内存容量不够时,采用分割复杂度:线性原地:稳定: public void bucket(int[] target,int bucketSize){ int max = Integer.MIN_VALUE; int min = Integer.MAX_VALUE...原创 2018-10-24 10:47:47 · 383 阅读 · 0 评论 -
数据结构---二分查找
//二分查找,大数据量,有序,数组,内存连续,按中间分割,取值比对,割去一半, //复杂度:log对数(n/2k=1) //内存消耗:越来越少 public int search(int[] target, int value, int start, int end) { int mid = (end + start) >> 1; ...原创 2018-10-25 10:09:16 · 137 阅读 · 0 评论 -
数据结构---分治排序(大数据,log复杂度)
//归并,按中间分开,往下分,一直分到只有一个终止。分开了的,前后比对,小的入列;每一层做的事情一样,又有终止条件;递,归; //老的衡量标准:稳定不。看每一层排序是否以左边为主,是就是稳定。在前面的始终在墙面 //时间复杂读,当n=1;T(n)=o(1);当n>1; //T(n)=2*T(n/2)(按中间分割两部分消耗)+n(merge方法消耗); //T(...原创 2018-10-19 16:36:37 · 362 阅读 · 0 评论 -
数据结构---回溯算法之八皇宫
public class EightQueue { public void doIterator(int level,int[] target){ if(level < 1)return; if(level > 8)return; for(int column=1;column<=target.length;column...原创 2019-01-10 10:30:51 · 249 阅读 · 0 评论