1、一个字符串的长度为n,其子串的数目是:n(n+1)/2+1。
向 n 个字符中间插入两片木板,这两片木板之间的即为原串的一个子串。
总共有 n + 1 个空位可以插,第一个木板插入后,第二个还有 n 个空位。
所以共有 n(n+1) 种插法,又由于两片木板交换顺序后,子串还是同一个子串,
所以子串数量应为 n(n+1)/2 。但最后,空串是任意字符串的子串,所以最后还要 +1。
2、多种排序执行方式,及其每种方法的空间时间复杂度,见自己的博文
3、hash冲突解决方法:
哈希函数:一般情况下,需要在关键字与它在表中的存储位置之间建立一个函数关系,以f(key)作为关键字为key的记录在表中的位置,通常称这个函数f(key)为哈希函数。
hash : 翻译为“散列”,就是把任意长度的输入,通过散列算法,变成固定长度的输出,该输出就是散列值。
这种转换是一种压缩映射,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。
3.1 开放地址法:
h0 = h(key);hi = (h(key) +di)Mod m. i = 1,2...s,1<=s<=m-1.m为表的长度,非元素个数
增量di有三种取法:
线性探测再散列 di = 1 , 2 , 3 , ... , m-1
平方探测再散列 di = 1^2 , -1^2 , 2^2 , -2^2 , 3^2 , -3^2 , ... , k^2 , -k^2
随机探测再散列 di 是一组伪随机数列
3.2 链地址法:
所有哈希地址相同的记录都链接在同一链表中。涉及计算ASL
3.3 再哈希,计算新的哈希函数,直至不冲突
4、linux进程:
</
向 n 个字符中间插入两片木板,这两片木板之间的即为原串的一个子串。
总共有 n + 1 个空位可以插,第一个木板插入后,第二个还有 n 个空位。
所以共有 n(n+1) 种插法,又由于两片木板交换顺序后,子串还是同一个子串,
所以子串数量应为 n(n+1)/2 。但最后,空串是任意字符串的子串,所以最后还要 +1。
2、多种排序执行方式,及其每种方法的空间时间复杂度,见自己的博文
3、hash冲突解决方法:
哈希函数:一般情况下,需要在关键字与它在表中的存储位置之间建立一个函数关系,以f(key)作为关键字为key的记录在表中的位置,通常称这个函数f(key)为哈希函数。
hash : 翻译为“散列”,就是把任意长度的输入,通过散列算法,变成固定长度的输出,该输出就是散列值。
这种转换是一种压缩映射,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。
3.1 开放地址法:
h0 = h(key);hi = (h(key) +di)Mod m. i = 1,2...s,1<=s<=m-1.m为表的长度,非元素个数
增量di有三种取法:
线性探测再散列 di = 1 , 2 , 3 , ... , m-1
平方探测再散列 di = 1^2 , -1^2 , 2^2 , -2^2 , 3^2 , -3^2 , ... , k^2 , -k^2
随机探测再散列 di 是一组伪随机数列
3.2 链地址法:
所有哈希地址相同的记录都链接在同一链表中。涉及计算ASL
3.3 再哈希,计算新的哈希函数,直至不冲突
4、linux进程:
</