随笔分类 - 数据结构与算法分析——C语言
摘要:数据结构起源 计算机从解决数值计算问题到解决生活中的问题 现实生活中的问题涉及不同个体间的复杂联系 需要在计算机程序中描述生活中个体间的联系数据结构主要研究非数值计算程序问题中的操作对象以及它们之间的关系 关键概念 数据 – 程序的操作对象,用于描述客观事物 数据的特点: 可以输入到计算
阅读全文
摘要:理解程序的本质程序是为了实际的问题而存在从本质上而言,程序是解决问题的步骤描述 一小步的进阶首先理解实际问题! 确认问题类型– 如:数值计算,求最小值个数 确认求解的步骤– 如:打开文件,读数据,关闭文件,计算和问题:如何判断求解步骤的好坏 通过下面的例子说明: 三个函数输出相同,可是很明显,第
阅读全文
摘要:以下摘自:http://blog.163.com/soonhuisky@126/blog/static/157591739201321341221179/ http://blog.csdn.net/haoni123321/article/details/7178748 为了讨论方便,先把问题稍微改变
阅读全文
摘要:链表是C语言面试中常见的问题,那么我们今天就实现一个作为练习。之前看过一些关于这方面的资料和 文章,写的都不尽人意,这次写一个具有启发性的历程,由于时间关系,有些东西还是不能一一罗列实现,因为必须要跳过进行下面的学习了,而且我留下的也都是主干之后的细枝末叶,需要花点时间优化。 eg: 考虑周全的代码
阅读全文
摘要:sum1所用指令步长明显比sum2多,sum2采用等差数列求和方式极大减少了运行时间。 我们常用大O表示法表示时间复杂性,注意它是某一个算法的时间复杂性。大O表示只是说有上界,由定义如果f(n)=O(n),那显然成立f(n)=O(n^2),它给你一个上界,但并不是上确界,但人们在表示的时候一般都习惯
阅读全文
摘要:疑惑: 1.我学了c/c++,还是学不出代码? 2.为什么相同功能的程序也是多种多样的? 3.程序的本质是什么? A: 程序是为了具体问题存在的,程序需要围绕问题的解决进行设计,同一个问题可以有多种解决方案。 如何追求程序的性价比?是否有可量化的方法判断程序的好坏? 数据结构起源: 计算机从解决数值
阅读全文
摘要:1 #include 2 int turn_n(int ,int); 3 int main(void) 4 { 5 int test,a=-15,b=0xfffffffe,c=15; 6 printf("%x\n%d\n%x\n",a,b,c); 7 test=turn_n(-15,4); 8 printf("%d\n",test); 9 ...
阅读全文
摘要:数学分析法: 我们知道两个加数,一定可以交换它们的值。a+b求得它们的和,比如为sum,但我们完全可以不再定义一个变量sum,而赋值给a或者b都是可以的,为什么呢?因为知道两个数的和,以及其中一个加数,一定可以得到另一个数。所以就算先覆盖一个加数也是无所谓的。得到a+b的和赋值给a之后,要把a和b交
阅读全文
摘要:所谓原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。 反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。 补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。 eg:
阅读全文
摘要:算法思路(以升序为例): key=A[j];保存需要的比较值,while循环中,A[i]>key,当前key值的前一个值如果大于key值,就把A[i]的值后移一位,此时后移的位覆盖了key,然后i--,又循环重复,一直到循环结束,循环结束时,从小到大排列,但是此时由于之前i--的原因,跳出循环之后,
阅读全文
摘要:面试题的常客: NOTE: 动态分配了内存,要记得释放,还要,这个代码虽然完成了要求,但是鲁棒性还不够,因为我没有判断给出的数据是否合理分布在数字0-9.或者字符0-9,实际开发中需要做个限定。
阅读全文
摘要:将10进制转换成2进制,是除以2得到的余数,再倒序排列,这可以用递归实现,也可以用数据结构——栈实现。 先看递归实现: 递归的实现方式,需要一定的逻辑性,如果把上述的打印函数和递归调用调换位置,输出将反向。这里对于递归的基础知识不做解释,如果忘记了,查询相关资料。 这里用递归能够很好的实现把最后求出
阅读全文
摘要:腾讯一道面试题:50个台阶,可以一次走一个台阶,也可以一次走两个台阶,那么走到50个台阶时,有多少种可能? 分析: 任何算法的背后,都隐藏着一个数学理论的支撑,所以大家都知道,数学是进阶算法的基石。 这道题,我们先从最基本的分析,找规律,假设可能情况为an,不难发现,a1=1,a2=2,a3=3,a
阅读全文
摘要:上面的算法可以达到目的,备注也比较清晰了,但这属于基础级。 我们要翻转,首先要数据分离,求得输入数字的位数,求输入数字位数就是一个简单的分离,而我们要想使用最后的数据,又需要结合。 下面展示一个同样达到效果的程序,出自GF之手(^(* ̄(oo) ̄)^); 这份代码非常简洁的完成了要求,倒序输出,但却
阅读全文
摘要:二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列。 在最坏的情况下,查找10次,2^10=1024; Analyze:
阅读全文

浙公网安备 33010602011771号