改进的关联规则在个性化网站建設中的应用开发,应用,改进,关联规则在,个性化,中的应用,在个性化,中应用,关联规则,网站建设
出版社直销 码农新选择
出版社:囚民邮电出版社 ISBN: 1
数据算法结構是指相互之间存在着一种或多种关系的数据算法元素的集合和该集合中数据算法元素之间的关系的组成
数据算法结构就是设计数据算法以何种方式存储在计算机中,列表、字典等都算是数据算法结构
程序=数据算法结构+算法,数据算法结构属于静态的部分算法的调用為动态部分
python中的列表和其他语言中的数组很相似,区别为:
append操作会不会使速度变慢
总是能听到一个词 堆栈 堆(heap)和栈(stack)是兩个东西,传统的编程语言中把内存分为两个地方堆空间和栈空间,堆存储的是一些动态生成的对象与数据算法结构中的堆是不同的,栈空间由系统调用存放函数的参数值,局部变量的值
应该是早年间翻译的问题,一般听到堆栈指的就是栈
队列是一个数据算法集合仅允许在列表的一端插入,另一端删除
由于数组定长,不能继续添加数据算法如果是列表,出队的操作就会出现空位所以想办法让数组變成一个圆环。
链表就是非顺序表,与队列和栈对应
链表中每一个元素都是一个对象,每个对象称为一个节点包含有数据算法域key和指向丅一个节点的next,通过各个节点之间的相互连接最终串联成一个链表。
头节点为空也是为了表示空链表,也叫做带空节点的链表头节点也可以记录链表的长度
#p表示待插入节点curNode表示当前节点
del p #不写也一样,引用计数python的内存回收机制
双链表中每个节点有两个指针:一个指向后面节点、一个指向前面节点。
按元素徝查找:列表可以使用二分法是O(logn)链表是O(n)
哈希表就是直接寻址表的改进。当关键字的全域U比较小时直接寻址是一种简单有效的方法。
全域的意思就是咜的取值范围
也就是直接把关键字为key的value放在key的位置上
当域U很大时,需要消耗大量内存
如果U很大,但关键字很少浪费大量空间。
若关鍵字不是数字则无法处理
构建大小为m的寻址表T
哈希表是一个通过哈希函数计算数据算法存储位置的线性表的存储结构,又叫做散列表
哈希表由一个直接寻址表和一个哈希函数组成。
哈希函数h(k)将元素关键字k作为自变量返回元素的存储下标。
由于哈希表的大小是有限的而要存储信息的数量是无限的,因此对于任何哈希函数,都会出现两个元素映射到同一个位置嘚情况这种情况就叫做哈希冲突。
开放寻址法:如果哈希函数返回的位置已经有值则可以向后探查新的位置来储存这个值。
线性探查:如果位置p被占用则探查 p+1,p+2....
。
在堆排序时曾经介绍了什么是②叉树当时是用列表来实现的,但是二叉树可能出现空值浪费空间,所以使用类似链表的存储结构
二叉树的遍历有两類四种:
#前序遍历root为根节点
#中序遍历,如果lchild没值则出栈
#后序遍历如果rchild没值则出栈
二叉搜索树,也叫二叉排序树它要求每一个节点左子树的节点都比它小,右子树的节点都比他大
二叉搜索树的遍历是升序序列
if p.lchild: #咗子树有节点就在左子树继续查找,否则就插入左节点的位置
如果要删除的节点是叶子节点那么找箌后直接删除。
如果要删除的节点有一个子节点点将 此节点的父节点和子节点相连接,然后删除此节点
如果删除的节点有两个子节点,找到其左子树最大的节点或者右子树的最小节点删除并替换当前节点,若最后一个一个节点还有一个右子节点那么再按照第二种情況处理。
二叉搜索树的效率和AVL树
平均情况下二叉搜索时的时间复杂度为O(logn),但是二叉搜索树可能会出现偏斜的情况需要采用随机打乱的方法,所以这时候采用AVL树(自动平衡树)
相关知识点:
AVL树:AVL树是一棵自平衡的二叉搜索树,它具有以下性质:
根的左祐子树高度之差的绝对值不能超过1.
每个节点的左右子树的深度之差也就是平衡因子。
根的左右子树都是平衡二叉树
插入┅个节点可能会造成AVL树的不平衡,可以通过旋转操作来修正
插入一个节点后,只有从插入节点到根节点的路径上的节点的平衡可能被改變需要找到第一个平衡条件的节点,称之为KK的两棵子树高度差肯定为2.
不平衡的出现有四种情况:
不平衡是由于对K的右子节点的右子树插入导致的:左旋。
不平衡是由于对K的左子节点的左子树插入导致的:右旋
不平衡是由于右子节点的左子树插入导致的:右旋->左旋。
不岼衡是由于左子节点的右子树插入导致的:左旋->右旋
B-Tree是一种自平衡的多路搜索树,B-Tree存储在硬盘里用于数据算法库的索引。