数据结构与算法
木头不是哑巴
这个作者很懒,什么都没留下…
展开
-
算法的时间复杂度和空间复杂度
1、时间复杂度 (1)时间频度一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。 (2)时间复杂度在转载 2015-07-09 10:40:03 · 514 阅读 · 0 评论 -
二叉树三种遍历算法的递归和非递归实现(C++)
struct BinaryTreeNode { int m_nValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRight; }; //递归前序遍历 void PreOrder(BinaryTreeNode* pNode) { if(pNode!=NULL) { coutm_nValue<<endl; PreOrder(pNod原创 2015-08-16 12:00:21 · 721 阅读 · 0 评论 -
字符串处理函数(strlen, strcmp, strcat, strcpy)
strlen(s) 返回s的长度,不包括字符串结束符null strcmp(s1, s2) 比较两个字符串是否相等,相同返回0 strcat(s1, s2) 将字符串s2连接到s1后 strcpy(s1, s2) 将s2复制给s1,并返回s1 //strlen int strlen(const char *str) { assert(str!=原创 2015-09-08 19:47:54 · 1129 阅读 · 0 评论 -
排序算法实现与对比
1. 插入排序1.1直接插入排序基本操作:将一个记录插入到已排好的有序表中,从而得到一个新的、记录数增1的有序表。整个排序过程进行n-1趟插入,即先将序列中第1个记录看成是一个有序的子序列,然后从第2个记录起逐个进行插入,直到整个序列变成按关键字非递减有序序列为止。性能分析:从空间来看,它只需要一个记录的辅助空间,从时间上来看排序的基本操作为比较两个关键字的大小和移动记录。当待排序列为正序则进行原创 2015-07-25 11:18:33 · 548 阅读 · 0 评论