【计算机综合】

编程基础

Java中堆内存(heap)和栈内存(stack)的区别

概率与统计

下面三种算法应该都属于数值概率算法

概率算法-Las Vegas

考虑用拉斯维加斯算法解决N皇后问题:
对于n后问题的任何一个解而言,每一个皇后在棋盘上的位置无任何规律,不具有系统性,而更象是随机放置的。由此容易想到下面的拉斯维加斯算法。
在棋盘上相继的各行中随机地放置皇后,并注意使新放置的皇后与已放置的皇后互不攻击,直至n个皇后已相容地放置好,或已没有下一个皇后的可放置位置时为止。注意这里解决的是找到其中一个方法,求不是求出N皇后的全部解。

概率算法-sherwood算法
蒙特卡洛算法简单理解与demo
抛硬币次数的期望

线性表
线性表与数组的对比

网络

计算机网络基础知识总结(重要)
TCP协议详解

协议中ACK是确认标识,而seq指的类似于自己信号的序号,ack类似于向对方请求什么数据,比如第二次握手时,服务端发送seq=y的信号,然后向客户端请求x+1的信号

TCP协议的学习(六)滑动窗口 停止等待 退后N帧 选择重传
OSI七层模型与TCP/IP五层模型
OSI七层协议大白话解读
路由器与交换机的区别与联系

【计算机综合】_第1张图片

二叉树遍历(前序、中序、后序、层次、深度优先、广度优先遍历)
快速理解平衡二叉树、B-tree、B+tree、B*tree

B+tree里,除了叶子节点,每个节点里存的值,都是指向的子树中的最小值

数据结构----完全二叉树和满二叉树以及前序、中序、后序遍历
森林、树与二叉树相互转换
算法与数据结构(十) 二叉排序树的查找、插入与删除

进行删除的时候,“右子树中位于最左方的那个结点”肯定没有左子树了,所以将这个节点的值复制到删除的节点位置,然后将这个节点删除,由于这个节点没有左子树,因此可以按单节点的方式进行处理

哈夫曼树

图基本算法 图的表示方法 邻接矩阵 邻接表
邻接表、逆邻接表
floyd算法:我们真的明白floyd吗?
Floyd-傻子也能看懂的弗洛伊德算法(转)

排序

排序算法:冒泡排序和选择排序的内容,区别与优缺点
冒泡排序的优化与误区

优化后的冒泡排序,即发现此时数组已经有序,那么提前跳出循环,最好情况下的复杂度是O(n)

非基于比较的排序——计数排序、桶排序、基数排序

为此建立一个长度为8 +1的数组,为什么多加1
其实可以不加1,加一没啥用

BFPRT算法(TOP-K问题)
【计算机综合】_第2张图片
内部排序和外部排序小结
排序算法二:二分(折半)插入排序

查找

索引顺序表查找算法(分块查找算法)
二分查找的平均查找长度详解【转】

动态规划

约瑟夫环之二(用递归的思想解决Josephus问题)

如果有n-1个人的时候解是f(n-1)=x,那么对应n个人的时候解就应该是f(n)=那个式子

字符串

(原创)详解KMP算法

一直要记住next[k]的含义是,当第k位匹配失败的时候,在模式串中的指针退回到哪个位置。举例来讲,如果模式串匹配过程中,此时原字符串T的指针i=15,模式串P中的指针j=6,即原字符串中9~14位与模式串中的0~5位相同,那么如果T[15]!=P[6],接下来无需从头比较T[10]和P[0],只比较T[15]和P[next[6]]就可以了。如果next[j]=0,那实际是说如果T[i]!=P[j]的话,那就得从第0位从头开始比。next中只有next[0]=-1,如果第0位都不匹配,那就对i进行增加,继续往后搜索。
求next的时候,这个还真得结合代码才能看懂:当P[k] != P[j]的时候,还需要比较P[j]和P[next[k]]是不是一样的。

BM模式匹配算法原理(图解)
BM算法详解
计算字符串的最长回文子串 :Manacher算法介绍

len[i]+i就是以i为中心的最大回文的右边界外的第一个字符指向的位置,并且p也应该指的是 之前计算中最长回文子串的右端点的最大值+1,虽然博客中讲解不是这个意思,但是他代码是这个意思,而且这个意思也比较好写代码

求解字符串所包含子串的个数

Linux系统

【Linux】磁盘的分区与命名规则
source命令与.命令
Linux中变量#,#,@,0,0,1,2,2,*,$ , , ,?的含义
Linux标准输入、输出和错误和文件重定向 专题

数据库

第一、第二、第三范式之间的理解和比较

编程

JVM学习笔记(七)类加载机制-类加载的时机、过程

static final String a=“312”;不会初始化类,但static final String a=new String(“312”);就会

反射中Class.forName()和ClassLoader.loadClass()的区别

剑指offer

调参

调参怎么调

进制转换

二进制的补码

下面是个神奇的现象,1左移32位之后,结果还是1,但先左移31位,再左移1位,结果就是0

public static void main(String[] args){
        System.out.println(Integer.toBinaryString(Integer.MIN_VALUE));
        System.out.println(Integer.toBinaryString((1<<31)));
        System.out.println(Integer.MIN_VALUE<<1);
        System.out.println(Integer.toBinaryString(1<<32));
        System.out.println(Integer.toBinaryString((1<<31)<<1));
    }

你可能感兴趣的:(数据结构)