随笔分类 - 数据结构
数据结构概念与习题
摘要:递归算法,计算二叉树中叶子结点的个数 基本思想:利用二叉树先序遍历的递归模板,计算度数为0的点的个数 void countleaf(Bitree *t, int count){ while(t != NULL){ if((t->lchild == NULL) && (t->rchild == NUL
阅读全文
摘要:归并排序 二路归并排序 初始时,将每个记录看成一个单独的有序序列,则n个待排序记录就是n个长度为1的有序子序列 对所有有序子序列进行两两归并,得到n/2个长度为2或1的有序子序列--一趟归并 重复步骤2,直到得到长度为n的有序序列为止 上述排列过程中,子序列总是两两归并,称为2路归并排序。其核心是如
阅读全文
摘要:排序方式时间复杂度空间复杂度稳定性复杂性 平均情况 最坏情况 最好情况 直接插入排序 O(n^2) O(n^2) O(n) O(1) 稳定 简单 希尔排序 O(n^1.3 \~ n^2) O(1) 不稳定 较复杂 冒泡排序 O(n^2) O(n^2) O(n) O(1) 稳定 简单 快速排序 O(n
阅读全文
摘要:冒泡排序 依次比较两个相邻的两个记录的关键字,若两个记录是反序的(即前一个记录的关键字大于后一个记录的关键字),进行交换,直到没有反序的记录为止。 一趟冒泡排序 对a[0]与a[1]的关键字比较大小,若反序,交换位置;然后比较a[1]与a[2]的关键字大小,若反序,交换位置。 以此类推,直到比较到最
阅读全文
摘要:直接插入排序 在有序数组中插入一个元素,可以作为一种排序方法的基础 只有一个元素的数组是一个有序数组,对n个元素的数组,可以从第一个元素所构成的单元数组开始,不断实施插入操作 插入第二个元素,得到2个元素的有序数组。插入第三个元素,得到3个元素的有序数组 如此反复,得到n个元素的有序数组 示例 对序
阅读全文