![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构
linuxcprimerapue
这个作者很懒,什么都没留下…
展开
-
字符串操作的实现:strstr、strcat、strcmp和stcpy
几个重点强调一下:(1)注意使用assert;(2)strcat 和 strcpy最后注意赋值'\0';(3)strcpy注意内存覆盖的情况;(4)strcmp中:while(!(ret = *(unsigned char *)s1 - *(unsigned char *)s2) && *s2 != '\0');???为什么要转换类 型;(5)原创 2015-08-27 15:02:46 · 1032 阅读 · 0 评论 -
二叉树各种遍历的实现(递归、非递归、层次、高度和节点数目)
以下代码将实现下列函数:(1)建树(2)递归前序遍历(3)递归中序遍历(4)递归后序遍历(5)非递归前序遍历(6)非递归中序遍历(7)非递归后序遍历(8)层次遍历(9)树的高度(10)节点数目#include#include#include#includeusing namespace std;struct BinaryTree{原创 2015-08-27 15:07:22 · 678 阅读 · 0 评论 -
华为2012机试第三题
3、操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级 = 50且 <= 255。优先级大于255的为非法任务,应予以剔除。现有一任务队列task[],长度为n,task中的元素值表示任务的优先级,数值越小,优先级越高。函数scheduler实现如下功能,将task[] 中的任务按照系统任务、用户任务依次存放到 system_task[] 数组和 user_t原创 2015-07-30 22:00:07 · 518 阅读 · 0 评论 -
判断一个自然数是否时某个数的平方
思路一:遍历1到n,将每个数的平方与n比较,若小于,则递增,若等于则返回,若大于,则失败思路二:二分查找1到n中某个数的平方为n,时间复杂度为logn.#includeint findValue(int start, int end, int n){ if(end < 1 || n < 1) { return -1; }原创 2015-07-31 20:37:32 · 599 阅读 · 0 评论 -
剑指offer面试题36数组中的逆序对数
题目描述:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。输入:每个测试案例包括两行:第一行包含一个整数n,表示数组中的元素个数。其中1 第二行包含n个整数,每个数组均为int类型。输出:对应每个测试案例,输出一个整数,表示数组中的逆序对的总数。样例输入:47 5 6 4原创 2015-07-31 21:04:28 · 361 阅读 · 0 评论 -
九度 1366 栈的压入弹出序列
题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。输入:每个测试案例包括3行:第一行为1个整数n(1第二行包含n个整数,表示栈的压入顺序。第三行包含原创 2015-08-17 10:04:19 · 889 阅读 · 0 评论 -
排序方法总结和实现
由于很多大神已经总结过各种排序算法的性能及适合坏境,这里便不再总结,只是强调几个重点。(1)快排的空间复杂度不是o(1),是o(logn)~o(n);(2)四种不稳定的排序算法:简单选择,快排,希尔和堆排序(3)冒泡排序最有情况下时间复杂度可优化为o(n);(4)归并排序的空间复杂度为o(n);(5)快排在整体倒序的情况下时间复杂度为o(n2)(6)建一个最大堆的复杂度为o原创 2015-08-26 11:47:04 · 613 阅读 · 0 评论