其它算法
文章平均质量分 72
yingzijk
小菜鸟!慢慢学习吧!加油!
展开
-
递归理解
递归概念:把问题转化为规模缩小了的同类问题的子问题,然后递归调用函数(或过程)来表示问题的解。特点:1.调用自身 2.务必有一个明确的递归结束条件(递归出口) 3.递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。4.在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。递归必须满足的条件: 1)调用自身原创 2016-05-11 10:27:15 · 410 阅读 · 0 评论 -
单链表的反转
【题目】单链表的反转【方法】 1:可以将单链表的data储存为数组,之后可以按数组的索引逆序进行反转。(一般不适用,浪费空间) 2:利用三个指针遍历单链表,逐个链接点进行反转。 3:从第2个节点到第N个节点,依次逐节点插入到第1个节点(head节点)之后,最后将第一个节点挪到新表的表尾。方法二: 定义p,q,r三个指针原创 2016-05-14 10:40:43 · 338 阅读 · 0 评论 -
找链表中倒数第K个结点
【题目】:输入一个链表,输出该链表中倒数第K个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个结点是值为4的结点。【思路】: 方法1:遍历两次链表即先算出链表的长度n,然后倒数第k个结点就是顺序的第(n-k+1)个数。 方法原创 2016-05-14 11:20:03 · 434 阅读 · 0 评论 -
高效合并两个有序数组
问题:两个有序数组,合并成一个有序数组,假设第一个数组空间足够容纳两个数组。分析:考虑到a数组很大,可以直接在a数组上进行合并,但是要讲究效率。如果单纯从前往后合并,那么效率会非常低,因为a数组后面的数字需要不停的移动。换一种思路,我们采用从后往前合并,首先计算出总长度,设置一个指针从a数组最后往前移动。#include #include #include u转载 2016-07-05 08:46:53 · 1181 阅读 · 0 评论 -
CheckSum 算法
计算机网络通信时,为了检验在数据传输过程中数据是否发生了错误,通常在传输数据的时候连同校验和一块传输,以下简单的程序是数据包的包头中校验和的算法:返回的就是索求的校验和结果,当接收端接受数据时候会从新计算校验和,如果与原校验和不同就视为出错,丢弃该数据包,并返回icmp报文。 IP/ICMP/IGMP/TCP/UDP等协议的校验和算法都是相同的,采用的都是将数据流视为16位整数流进行重转载 2017-07-16 16:12:52 · 7974 阅读 · 0 评论