04 2009 档案
摘要: 计算代数和 sum = 1 - 1/2 + 1/3 + 1/4 - 1/5 + 1/6 + 1/7 + 1/8 - 1/9 + …
阅读全文
摘要: ** BTree.h二叉树抽象类型
** 由给定的完全二叉树形式存储的数组(如"12345 6"),构造二叉树
** 提供:复制构造函数和赋值操作符重载
** 递归和非递归形式的中、前、后序遍历方法
** 求一个节点的父节点,左右兄弟结点的函数
** 求二叉树深度和结点个数的函数
阅读全文
摘要: * 根据给定的字符串构造一个排序二叉树
* 从排序二叉树中寻找最大值,最小值,不存在时抛出invalid_argument异常
* 从排序二叉树中删除某一元素,不存在时抛出invalid_argument 异常
* 往排序二叉树中添加一个新元素
阅读全文
摘要: 用strcpy和strncpy时的一些疑问答疑,含两个函数的源代码。
阅读全文
摘要: 较全面分析sizeof:
1. 一些基本类型的vc6 sizeof结果
2. 结构体的内存对齐
3. 含位域的结构体介绍
4. 含位域的结构体的内存对齐(压缩存储和非压缩存储)
5. 嵌套结构体的sizeof
6. 类对象的sizeof
7. 通过代码如何修改默认对齐模数
阅读全文
摘要: 桶式排序是对一个有n个整型元素的数组a[n],其中对任意i,0 <= a[i] <= m的特殊排序算法。
可以对 n==m, n != m分别处理。写代码时需要注意的的是a[i]是访问第i-1个元素,而非第i个。
n != m时,运行时间为O(m+n),辅助空间为O(m)
n == m时特殊处理,运行时间为O(N), 辅助空间为O(1)
阅读全文
摘要: 归并排序思路:将序列从中间分割成两部分,分别递归归并排序,后将两个子序列合并。
归并排序虽然是经典排序里比较最少的算法,但有大量的复制操作,还需要O(N)的辅助空间,从而一般不用于主存,也不利于c++编程。
Java中比较操作耗时多,而复制则耗时少,从而归并排序是Java中主要排序方法。
而在C++ STL中快速排序是基本排序方法。
阅读全文
摘要: 快速排序:确定一个枢纽元,一次遍历后将数组划分成两个部分,第一部分均比枢纽元小,第二部分都比枢纽元大,然后对这两个数组进行快速排序,是一种递归的方法
平均运行时间O(Nlog(N)),最坏运行时间O(N^2)
最坏情形:对于预排序的序列。
对与枢纽元相等的元素处理:
i,j都停止:会比较相等元素,但是可以划分成长度相当的两个子数组
i,j都不停止,不会比较相等元素,但是可能产生长度不平衡的两个子数组(与枢纽元相等的元素较多时)枢纽元的选取:
1. 选取第一个元素做枢纽元:对于(部分)预排序的序列运行时间O(N^2)
2. 随机生成枢纽元:能避免上述问题,但是产生枢纽元的代价高
3. 三数中值分割法:选取左端,右端,中间位置三个元素的中值
阅读全文
摘要: 自己编写的一个矩阵类。
从文件中读取矩阵和将矩阵写入文件这两个函数费了一点心思,感觉作用也大一些。
收获:1. 对类的static成员函数的作用有所了解。
2. 对文件的读写操作熟练了一些。clear,seekg等
3. 对异常处理的初级应用。
阅读全文