摘要:
二叉排序树或者是一棵空树,或者是具有下列性质的二叉树 1)若左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值; 2)若右子树不空,则右子树上所有结点的值均小于或等于它的根结点的值; 3)左、右子树也分别为二叉排序树;查找步骤: 若根结点的关键字值等于查找的关键字,成功; 否则,若小于根结 阅读全文
摘要:
1.图的定义 1)线性表我们把数据元素叫做元素,树中将数据元素叫结点,在图中数据元素,我们则称之为顶点。 2)线性表中可以没有数据元素,称为空表。树中可以没有结点,叫做空树。再图结构中,不允许没有顶点。 3)线性表中,相邻的数据元素之间具有线性关系,树结构中,相邻两层的结点具有层次关系,而图中两个顶 阅读全文
摘要:
1.树的度 结点拥有的子树数称为结点的度。度为0的结点称为叶结点(leaf)或终端结点;度不为0的结点称为非终端结点或分支结点。2.分支结点 分支结点也称为内部结点。3.树的层次 结点的层次从根开始定义起,根为第一层,根的孩子为第二层。4.树的存储结构 利用顺序存储和链式存储的特点,完全可以实现对数 阅读全文
摘要:
1.基本思想: 将一个记录插入到已排序好的有序表中,从而得到一个新记录数增1的有序表。即:先将序列的第1个记录看成是一个 有序的子序列,然后从第2个记录逐个进行插入,知道整个序列有序为止。 要点:设立哨兵,作为临时存储和判断数组边界之用。 如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在 阅读全文
摘要:
一、冒泡排序 1)复杂度 时间O(n^2) 稳定 2)程序实现 void Maopao(type a[],int n) { int i,j; type temp; for(i=1;i<n;j++)//排序 { for(j=0;j<10-i;j++) { if(a[j]>a[j+1]) { temp 阅读全文
摘要:
选择排序 选择排序是一种直观的排序算法.它的原理是每一次从待排序中选出最小或最大的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完.选择排序是不稳定的排序方法(比如:[5,5,2],在第一次就将第一个5与3交换了,导致第一个5挪到第二个5后面)。实现:void SelectSort(ty 阅读全文
摘要:
快速排序 思想: 对冒泡排序的一种改进 通过一趟排序将要排序的数据分割成独立其中一部分的所有数据都比另外一部分小的两部分,然后再按此方法对这两部分分别进行快速排序, 个过程可以recursion(递归)进行,以此达到整个数据成为有序序列. 是否稳定: 不稳定,多个相同的值得相对位置也许会在算法结束的 阅读全文
摘要:
基数排序(桶排序)基本思想: 是将阵列分别有限数量的桶子里。每个桶子再个别排序。桶排序是鸽巢排序的一种归纳结果。当要被排序的数值是均匀分配的时候,桶排序使用线性时间(O(n));桶排序的缺点: 1)首先是空间复杂度比较高,需要额外开销大。排序有两个数组空间开销,一个存放待排序数组,一个就是所谓的桶, 阅读全文
摘要:
堆排序 堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位制定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个结点的值都不大于其父节点的值。在数组的非降序排序排序中,需要使用的就是大根堆,因为根据大根堆的要 阅读全文
摘要:
归并排序 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有有序的自序序列归并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并 阅读全文
摘要:
shell(希尔排序) 希尔排序(Shell Sort)是插入排序的一种,也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL. Shell于1959年提出而得名。 希尔排序是记录按下标的一定增量分组,对每组使用直接排序算法排序;随着增量逐渐减少,每组包 阅读全文
摘要:
1.管道(pipe)及有名管道(named pipe) 管道可用于具有亲缘关系进程间的通信,有名管道除了具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。 2.信号(signal) 信号是在软件层次上对中断机制的一种模拟,它是比较复杂的通信方式,用于通知进程有某事件发生。 3.消息队列(mes 阅读全文