算法
文章平均质量分 59
1*null
喜欢可爱的女孩子,喜欢学习,喜欢敲代码
展开
-
链表的创建,插入,删除,逆置运算
<span style="font-family: Arial, Helvetica, sans-serif;">#include <stdlib.h> </span>typedef struct num{ int data; struct num *next; // next指针用来找到结点的下一个结点(存放着下一个结点的地址) }list,*link...原创 2016-07-25 11:53:56 · 596 阅读 · 0 评论 -
加密算法
MD5MD5消息摘要算法,属Hash算法一类。MD5算法对输入任意长度的消息进行运行,产生一个128位的消息摘要,并且它是一个不可逆的消息变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的消息。应用一般为防止篡改,如你将一个消息和用MD5将消息生成的128位消息摘要一同发给接收方,接收方然后重新计算MD5时就可以和你发送的消息摘要进行比对,从而得出消息是...转载 2018-08-18 13:08:22 · 272 阅读 · 0 评论 -
LRU算法实现
LRU(最近最久未使用)当缓存满了的时候,我们要淘汰出最久未被使用的数据。1.用一个数组来存储数据,给每一个数据项标记一个访问时间戳,每次插入新数据项的时候,先把数组中存在的数据项的时间戳自增,并将新数据项的时间戳置为0并插入到数组中。每次访问数组中的数据项的时候,将被访问的数据项的时间戳置为0。当数组空间已满时,将时间戳最大的数据项淘汰。这需要每次遍历hash表,不是很好。publ...转载 2018-08-20 10:49:31 · 1722 阅读 · 0 评论 -
链表的插入排序
链表的插入排序。#include #include typedef struct num{ int date; struct num *next;}list,*link;void print(link head);link create(link head){ link temp,pnew; head=(link)malloc(sizeof(list)); temp=he原创 2016-07-25 13:54:47 · 318 阅读 · 0 评论 -
关于递归实现过程的详解
最近在学数据结构的时候,碰到了递归,但由于自己一直对递归一知半解,所以不能全面的理解递归的过程到底是怎样实现的,下来研究了一下,觉得还是有所收获的。 假设我们用递归实现一个数的阶乘。int fun(int n){ if(n == 0) return 1; else return n*fun(n-1); }这里递归调用的过程为:递归调用 其实就是函数的调用而已,只不过这原创 2016-11-16 21:36:04 · 8314 阅读 · 0 评论 -
B+树
前面我们介绍了B-树(B树),现在我们来了解一下B+树。B+树是基于B-树的一种变体,有着比B-树更高的查询性能,他们有着一些相同点,但是B+树也具有一些新特征。一个m阶的B+树具有以下几个特征:1. 有k个子树的中间节点包含有k个元素(B树是k-1个元素),每个元素不保存数据,只是来索引,所有数据都保存在叶子节点。2. 所有的叶子节点中包含了全部元素的信息,及指向这些元素记录的指针,且叶子节点本...转载 2018-03-10 22:39:39 · 226 阅读 · 0 评论 -
堆栈排序算法
堆排序维护的二叉树是一颗完全二叉树,大顶堆用来升序排序,要求父节点大于等于左右子节点。而小丁堆用来降序排序,要求父节点小于等于左右子节点。/* 堆排序 * 如果按升序排序,就维护最大堆,降序就维护最小堆 * 这里我们按升序讲 * 每次把最大元素放在堆顶,然后交换数组的头尾两个元素,这样数组的最后一个 * 元素就是最大的,然后依次找出剩下的元素中的最大元素,交换,这样就会得到 * 一个升序...原创 2018-03-04 21:56:50 · 967 阅读 · 0 评论