摘要:
性质 红黑树是满足下列性质的二叉树: 树中只有红色的节点和黑色的节点 根节点是黑色的 外部节点(NIL)都是黑色的 注意:这里的外部节点指的是这样的节点: 为了节省空间可以使他们指向同一个外部节点 对于C/C++语言来说可以不设外部节点,如果一个节点没有子节点,可以将其节点的指针域置为空,可以视空节 阅读全文
摘要:
算法思想 归并排序使用了分治的套路,先将待排序元素划分为个数均等的两部分,然后在对已经划分的两个部分在进行均等 划分,如此递归的划分下去,直到区间无法在划分时停止,然后合并这些子区间即可;合并时每次从两个子区间内选 出最大(降序排序)或者最小(升序排序)的元素放入辅助空间内,直到某个子区间为空,然后 阅读全文
摘要:
算法思想 大根堆 堆其实是一种近似完全二叉树的数据结构,当树中所有的父节点的值都大于它的子节点的值时,这样的二叉树又 被称为大根堆; 堆的存储方法 堆(二叉树)既可以使用数组表示,也可以使用链式节点表示,但是堆排序适用于对数组进行排序,无法对无序的 链式二叉树进行排序; 数组表示二叉树时数组中元素的 阅读全文
摘要:
算法思想 取待排序元素的区间端点作为作为界值,然后通过交换使得待排序元素中所有大于界值的元素位于界值的一侧, 所有小于界值的元素位于界值的另一侧,然后在对界值左右两侧的待排序元素使用同样的方法进行排序,直到下一 次待排序区间只有一个元素时,则表示所有的元素排序完成,可以看出这种排序方式使用了分而治之 阅读全文
摘要:
算法思想 希尔排序算法思想 使用一个增量序列{t1,t2,t3,......tn},其中tn>....>t2>t1=1,其实这个增量序列也可以理解为 间距序列; 设有数组A[k],下标从0开始: 当增量为tn时,从数组首元素A[0]开始,此时距离首元素间隔为tn的元素是A[tn],下一个距离元素A[ 阅读全文
摘要:
算法思想 从左到右依次比较,找出全部无序最小的元素与数组中的第一个元素进行交换;然后从第数组中第二个元素 开始比较,找出剩余无序元素中最小的的元素,然后将其与数组中的第二个元素进行交换,按照这种方式操作 下去直到数组有序 例:升序排序8,1,6,3,2,4 代码实现 bool SelectionSo 阅读全文
摘要:
算法思路 升序排列: 从左到右(或右到左)比较相邻的元素,如果当前元素比下一个元素大(或者小),就交换他们两个。 对下一对相邻元素做同样的工作,从开始第一对到结尾的最后一对,本轮排序完成后得到无序部分中的最大元 素,此时这个最大元素和之前的已经排序的部分,组成新的有序部分 针对所有的无序元素重复以上 阅读全文
摘要:
算法思想 将数据分为两部分:有序表,无序表;开始时有序表为空,无序表中全部是待排序数据,依次从无序表中取出待 排序元素插入到有序表中的合适位置,使有序表中的元素保持有序,直到无序表为空,表示排序完成。 例如:对数组使用插入排序 红色部分表示无序表,绿色部分表示有序表,直线箭头表示挪动元素以留出空间, 阅读全文
摘要:
下载Qt 在Qt的官网上必须得登陆才能下载,这让我倍感烦躁,于是百度下找到这个链接http://download.qt.io/archive/qt/进入无需登陆即可下载,还能选择一些历史版本,因为我装了VS2015,所以我选择支持MSVC2015编译套件 的Qt: 上面两个都要安装,一个用来生成32 阅读全文