- 博客(20)
- 收藏
- 关注
原创 排序
排序:将一个数据元素(或记录)的任意序列,重新排列成一个按关键字有序的序列。排序的基本操作:比较和移动排序的时间复杂度可用算法执行中的记录关键字比较次数与记录移动次数来衡量。排序方法的稳定性直接插入排序(算法分析):关键字比较次数和记录移动次数与记录关键字的初始排列有关。最好情况下,排序前已按关键字从小到大有序,每趟只需与前面有序记录序列的最后一个记录比较1次,总的比较次数
2013-12-18 17:53:31 1049
原创 图
图(Graph):图G由两个集合构成,记作G= 其中V是顶点的非空有限集合,E是边的有限集合,其中边是顶点的无序对或有序对集合。无向图(Digraph):在图G中,若所有边是无向边,则称G为无向图;有向图(Undigraph):在图G中,若所有边是有向边,则称G为有向图;,v为弧尾,w为弧头。混和图:在图G中,即有无向边也有有向边,则称G为混合图;
2013-12-18 15:48:50 651
原创 查找
查找表是由同一类型的数据元素构成的集合。对查找表的操作:1、查询某个特定的数据元素是否在查找表中。2、查询某个特定的数据元素的各种属性 。3、在查找表中插入一个数据元素。4、在查找表中删除一个数据元素。查找表的分类静态查找表:仅作查询和检索操作的查找表。动态查找表:在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已
2013-12-18 15:38:15 827
原创 树和二叉树
树的特点:1、树中至少有一个结点——根。2、树中各子树是互不相交的集合。树型结构(非线性结构),一对多的关系根结点(无前驱)、叶子结点(无后继)、其它结点(一个直接前驱、但可能有多个后继)结点、结点的度、叶子、分支结点、孩子、双亲、兄弟、树的度、结点的层次、深度、森林、有序树、无序树(一种规定根结点的层数为0,另一种规定为1)有向树:有确定的
2013-12-18 15:17:49 863
原创 字符串
串:一种特殊的线性表,它是由零个或多个字符组成的有限序列,一般记作s=“a1,a2, a3, ... an” 。隐含结束符'\0',值=NULL。串的长度:串中包含的字符个数。空串:长度为0的串。空白串:仅有一个或多个空格组成的串。串中包含的字符可以是字母、数字或其它字符。空串!=空白串子串:串中任意连续的字符组成的子序列称为该串的子串。
2013-12-18 14:56:57 540
原创 顺序表和单链表
数据结构:描述现实世界实体的数学模型(属性&方法)。集合:仅同属于一个集合。线性结构:一对一树结构:一对多(非线性)图结构:多对多(非线性)数据的逻辑结构:数据元素之间的逻辑关系,与数据的存储无关。数据的存储结构:是逻辑结构在计算机中的存储映像(实现)。顺序存储结构:A、借助元素在存储器的相对位置来表示数据元素之间的逻辑关系。B、使用一片地址连续
2013-12-18 14:37:36 696
原创 折半查找
#include using namespace std;const int SIZE=50;int main(){ int arr[SIZE]; int no,key; cin>>no; for(int i=0;i<no;i++) cin>>arr[i]; int min=0,max=no-1; int mid=(min+max)/2; cin>>key; whil
2013-12-18 13:07:44 415
原创 顺序查找
#include using namespace std;const int SIZE=50;int main(){ int i,no,arr[SIZE]; cin>>no; for(i=1;i<=no;i++) cin>>arr[i]; cin>>arr[0]; for(i=no;i>=0;i--) { if(arr[i]==arr[0])
2013-12-18 13:07:04 497
原创 结点和链表
#include using namespace std;typedef int T;struct Node{ T data; Node* next; Node(const T& d):data(d),next(NULL) {} operator T() { return data; }};void showlist(Node* head){ Node* p
2013-12-18 13:05:05 440
原创 栈和队列
#include #include using namespace std;typedef string T;class Stack{ T a[5]; int cur;public: Stack():cur(0) {} void push(const T& d)throw(const char*); //数据入栈成为栈顶 T pop()throw(const char*)
2013-12-18 13:01:43 666
原创 二叉查找树
#include using namespace std;typedef char T;class bst{ struct Node{ T data; Node* L; Node* R; Node(const T& d):data(d),L(),R(){} Node(const T& d,Node*l,Node*r):data(d),L(l),R(r){} }; t
2013-12-18 13:00:04 421
转载 基于huffman编码的文本压缩程序
二、程序功能描述程序实现的功能:对文本文件进行压缩以及对压缩的文本文件进行解压缩。程序的实现的理论依据是赫夫曼编码。赫夫曼编码是一种无损的压缩算法,一般用来压缩文本和程序文件。赫夫曼压缩属于可变代码长度算法一族。意思是个体符号(例如,文本文件中的字符)用一个特定长度的位序列替代。因此,在文件中出现频率高的符号,使用短的位序列,而那些很少出现的符号,则用较长的位序列。程序由三个文件组
2013-12-18 12:56:18 2173
原创 KMP算法
引用v_JULY_v的博客:http://blog.csdn.net/v_july_v/article/details/6111565
2013-12-17 22:44:44 566
原创 BFS和DFS算法
引用v_JULY_v的博客:http://blog.csdn.net/v_july_v/article/details/6111353
2013-12-17 22:15:05 571
原创 Dijkstra算法
引用v_JULY_v的博客:Dijkstra 算法初探:http://blog.csdn.net/v_july_v/article/details/6096981
2013-12-17 21:35:06 383
原创 快速排序
#include using namespace std;const int SIZE=50;void sort(int arr[],int l,int r);int main(){ int arr[SIZE],i,no; cin>>no; for (i=0;i<no;i++) cin>>arr[i]; sort(arr,0,no-1);
2013-12-17 19:18:01 410
原创 插入排序
#include using namespace std;const int SIZE=50;int main(){ int no,i,j; int arr[SIZE]; cin>>no; for(i=0;i<no;i++) cin>>arr[i]; for(i=1;i<no;i++) { if(arr[i]<arr[i-1]) {
2013-12-17 19:16:50 445
原创 选择排序
#include using namespace std;const int SIZE=50;int main(){ int no,i,j; int arr[SIZE]; cin>>no; for(i=0;i<no;i++) cin>>arr[i]; for(i=0;i<no-1;i++) { for(j=i+1;j<no;j++)
2013-12-17 19:14:59 390
原创 冒泡排序
#include using namespace std;const int SIZE=50;int main(){ int i,arr[SIZE],num; cin>>num; for (i=0;i<num;i++) cin>>arr[i]; for (i=0;i<num-1;i++) { for (int j=0;j<num-i-1;
2013-12-17 19:13:28 359
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人