log2
将相距一个增量单位的元素集组成一个子集,然后通过以子集为单位对数据进行比较,最后得到子集间的数据是有序的,但是子集内德数据还未排序。这样继续缩小增量循环比较进行互换位置处理,直到增量变为1时为最后一次循环比较。 希尔排序算法突破了O(n^2)的时间复杂度
数据结构简单入门/复习(四)-树与二叉树的知识介绍(C语言) 在 栈与队列 树与二叉树 这两个章节之前还有 串 和 数组与广义表,但字符串与数组的基本使用并没有值得注意的,因此跳过。 这部分介绍树与二叉树的知识点,各种实现代码将在后续章节补充。 下图便是一种树,A是树的根,树的编号按层序遍历编号
哈夫曼树的处理其实很简单,将所有的权值节点放入最小优先队列中,每次取队头的两个数出来,组成一棵树,这颗树就三个节点,头节点是两个子节点的权值和。然后将新形成的头节点放入原先的最小优先队列中,循环上述过程就成为了一颗哈夫曼树。 将这些节点放入最小优先队列中,选择最小的两个权值节点——2、3出队,同时算出这两个节点的和为5 将刚刚得到的5权值节点放入初始的最小优先队列中,并再次pop出两个最小的权值节点,这次选择5、6,计算出和为11 重复上述操作,我们发现现在的最小优先队列的值为[7 10 11 19 21 32],而我们这次出队的两个节点7、10都不是已经构造号的二叉树里面的节点,所以需要另外开一颗二叉树,这个树就是 17、7、10(头、左、右) 现在队列是[40 60],就只剩两个了,和为100,构建100、40、60 5、avl树,bst树(两者出现一个) AVL 树是一种平衡二叉树
从一个起始位置移动到一个最终目标所需的时间由两个参数来决定,到目标的距离(D)和目标的大小(W),用数学公式表达为时间 T=a+blog2(D/W+1)。 一个人面临的选择(n)越多,所需要作出决定的时间(T)就越长。用数学公式表达为反应时间 T=a+b log2(n)
在c++中,vector 是一个十分有用的容器。它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。 vector 在C++ 标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库
将相距一个增量单位的元素集组成一个子集,然后通过以子集为单位对数据进行比较,最后得到子集间的数据是有序的,但是子集内德数据还未排序。这样继续缩小增量循环比较进行互换位置处理,直到增量变为1时为最后一次循环比较。 希尔排序算法突破了O(n^2)的时间复杂度