- 博客(33)
- 收藏
- 关注
转载 最小生成树
给定一个带权的无向连通图,如何选取一棵生成树,使树上所有边上权的总和为最小,这叫最小生成树.求最小生成树的算法(1) 克鲁斯卡尔算法图的存贮结构采用边集数组,且权值相等的边在数组中排列次序可以是任意的.该方法对于边相对比较多的不是很实用,浪费时间.(2) 普里姆算法图的存贮结构采用邻接矩阵.此方法是按各个顶点连通的步骤进行,需要用一个顶点集合,开始为空集,以后将以连通的顶点
2015-04-19 22:03:14
457
转载 模式匹配算法--KMP c代码
字符串匹配算法朴素模式匹配算法过程简单,效率低,原因是进行了重复的字符比较。KMP算法是其的改进,大大提高了匹配效率一、初识KMP 理解KMP算法需要关注2个问题:(请注意:字符串下标从0开始。) 当i指针与j指针失配时: 1、当母串和模式串不匹配时,i指针为什么不需要回溯? 2、当母串和模式串不匹配时,i指针不回溯,那么
2015-04-17 15:19:13
611
原创 计算程序耗时的简单实现代码
头文件添加#include int main(){ int i, j; clock_t start, finish; start = clock(); //添加程序块 finish = clock(); printf("\n本次计算一共耗时:%f秒\n\n", (double)(finish-start)/CLOCKS_PER_SEC); return 0;}其中
2015-04-05 17:10:32
682
原创 数据结构-线性表的一些基础操作 c++代码
//线性表的顺序存储结构template class Linearlist{ public: Linearlist(int MaxListSize == 10); ~Linearlist() { delete []element; } bool IsEmpty() const { return length == 0; } bool IsF
2015-03-31 20:22:11
1143
原创 数据结构-栈的一些基础操作c++代码
堆栈(简称栈) 是一种操作受限的线性表,只允许在表的同一端进行插入和删除操作,且这些操作是按先进后出的原则进行的。template struct SLNode{ T data; //数据域 SLNode *next; //指针域 SLNode(SLNode *nextNode = NULL)
2015-03-31 20:18:13
704
原创 存储文本行
存储文本行的一种好办法是用一个指针(模拟一个数组)指向一系列的char型指针(每个模拟一个数组)。这种数据结构有时被称为不规则数组char *a[4] = {"this", "is", "a", "test"};char **p = a;#include char **p = malloc(4*sizeof(char *));if (p != NULL){ p[0] =
2015-03-28 22:12:34
592
转载 字符串与指针
在C语言中,有两种方式存储字符串,一种是字符数组,另一种就是指针形式。第一种,字符数组#include #include int main(){ int i; char a[] = "hello,world!"; a[0] = 'H'; for (i=0; i<12; i++) { printf("%c", a[i]); } printf("\n"); ret
2015-03-28 20:25:19
463
原创 sizeof 和strlen
当计算字符串的大小时,sizeof和strlen的区别:sizeof 包括字符结束标识符,strlen不包括。#include #include #include int main(){ int a[2] = {0,1}; char b[7] = "hellor"; int i = sizeof(a); int j = sizeof(a)/sizeof(a[0]);
2015-03-27 21:49:16
550
原创 .h头文件的使用方法
1. 宏定义(预处理#define);2. 结构、联合和枚举声明;3. typedef声明;4. 外部函数声明;5. 全局变量声明。可以定义在global.h文件中,但记得写extern,然后再在global.c中写一遍,不加extern,如果有赋初值的变量,在global.h中不赋值,在global.c中赋值。global.h#ifndef __GLOBAL_H_#
2015-03-27 19:50:28
2433
原创 sizeof
#include #include int main(){ int a[2] = {0,1}; int i = sizeof(a); int j = sizeof(a)/sizeof(a[0]); printf("%d,%d\n", i,j); return 0;}当数组是函数的参数时,sizeof不能正确报告数组的大小,这个测试函数
2015-03-27 16:28:03
327
原创 动态分配多维数组
传统的解决方案是分配一个指针数组,然后把每个指针初始化为动态分配的“行”,如下例:#include int **array1 = malloc(nrows * sizeof(int *))for (int i=0; i<nrows; i++){array1[i] = malloc(ncolumns * sizeof(int))}也可以让数组的内容连续,但在后来重新分配行的时候会
2015-03-27 15:44:08
640
原创 警告:“semantics of '>' change in ANSIC”的意思
这是某些编译器提出的警告,指出有些代码在ANSIC的“值保护” 规则下得到的结果可能跟老的“无符号保护”规则下得到的结果不同。实际上改变的并不是>操作符的语义,而是当两个不同类型出现在二元操作符的两侧或者对短的整数类型进行提升时总是发生的隐式类型转换语义、(如果你觉得在表达式中没有使用任何无符号值,那么最可能是strlen函数,在标准C中,strlen返回size_t,无符号类型)
2015-03-27 10:41:46
575
转载 const 用法大全
看到const 关键字,C++程序员首先想到的可能是const 常量。这可不是良好的条件反射。如果只知道用const 定义常量,那么相当于把火药仅用于制作鞭炮。const 更大的魅力是它可以修饰函数的参数、返回值,甚至函数的定义体。const 是constant 的缩写,“恒定不变”的意思。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。所以很多C++程序设
2015-03-26 21:16:16
611
原创 最小生成树--普里姆算法
// Prim 算法生成最小生成树void MiniSpanTree_Prim(MGraph G){ int min, i, j, k; int adjvex[MAXVEX]; //保存相关顶点下标 int lowcost[MAXVEX]; //保存相关顶点间边的权值 lowcost[0] = 0; //v0作为最小生成树的根开始遍历,权值为0 adjvex[0
2015-03-26 10:31:08
570
转载 struct和typedef struct
文章转自http://www.cnblogs.com/qyaizs/articles/2039101.htmlstruct和typedef struct分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu;
2015-03-25 17:07:42
332
原创 单链表
用链接存储方式存储的线性表称为链表。链表主要有三种实现方式:单链表,循环链表和双向链表。链表的查找,插入,删除单链表的定义:一个单链表有数据域和指针域组成。 其中数据域存放该节点的数据域的值,指针域next存放该节点的后继结点的地址信息。数据域 指针域datanext 单链表结点链表的插入操作: ListInsert (*L, i, e) , 即在线性表的第i
2015-03-23 11:54:09
753
转载 const 的用法
C/C++语言中const的用法1. const 在C和C++中的区别C++中的const正常情况下是看成编译期的常量,编译器并不为const分配空间,只是在编译的时候将期值保存在名字表中,并在适当的时候折合在代码中. 所以在C++中const修饰的量可以用在数组的定义中。而在C中,const是一个不能被改变的普通变量,既然是变量,就要占用存储空间,所以编译器不知道编译时的值.
2015-03-16 16:22:21
403
原创 数据结构算法-排序算法之交换排序-快速排序
快速排序:1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;2)以第一个数组元素作为关键数据,赋值给key,即key=A[0];3)从j开始向前搜索,即由后开始向前搜索(j--),找到第一个小于key的值A[j],将A[j]和A[i]互换;4)从i开始向后搜索,即由前开始向后搜索(i++),找到第一个大于key的A[i],将A[i]和A[j]互换;
2015-03-16 14:43:09
440
转载 string字符串 size,length,capacity
本文转自http://www.cnblogs.com/chinazhangjie/archive/2010/08/19/1803042.htmlstrings存在三种“大小”:1、size()和length() 返回string中现在的字符个数。上述两个函数等效。成员函数empty()用来检验字符数是否为0,亦即字符串是否为空。你应该优先使用该函数,因为它比leng
2015-03-16 11:02:18
1231
原创 数据结构-交换排序-冒泡排序
冒泡排序的原则:1. 相邻的两个元素两两比较。从上到下(从左到右)升序排列;2. 如果有n个元素需要比较n-1次,每一轮减少1次比较;3.冒泡排序,就是从下往上两两比较,所以看上去就跟泡泡往上冒一样。#include void ButtleSort(int k[], int n){ int i, j, temp, count1 = 0, count2 = 0; i
2015-03-16 10:38:57
425
原创 数据结构-排序算法-希尔排序
希尔排序是插入排序中的一种,只需把直接插入排序的步长变了即可。#include void ShellSort(int k[], int n){ int i, j, temp; int gap = n; if(NULL == k || 0==n) { printf ("The data is error!\n"); } do { gap = gap/3 +1;
2015-03-15 22:01:20
390
转载 动态分配二维数组
文章转自http://hi.baidu.com/jiaon/item/52017c5a145debcfd2e10c52动态分配空间连续的二维数组:最近做的一个东西需要动态分配大空间的二维数组,然后进行整块内存(缓冲区 buffer)的操作,出现了二维数组空间不连续的问题。动态分配二维数组的一般方法是这样:假设数组存的数据类型是intint **p=NULL;
2015-03-15 21:07:21
812
转载 动态申请内存new和malloc的区别
文章转自http://www.cnblogs.com/fly1988happy/archive/2012/04/26/2470542.htmlnew和malloc的区别1. malloc()函数1.1 malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void *malloc(unsigned int num_bytes);
2015-03-15 20:52:42
5028
原创 数据结构-排序算法-直接插入排序
有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元
2015-03-15 14:49:08
422
原创 优快云博客插入公式方法
打开此网址,http://www.codecogs.com/latex/eqneditor.php,就会显示上面的图画框,“在这个盒子里书写您的公式”,然后在“Click here to Download Image(GIF)”上面将显示你输入的公式,点击右键复制图片,粘贴到你写的博客里面,就ok了。
2015-01-12 11:01:18
503
原创 机器学习-决策树
分类决策树模型是一种描述对实例进行分类的树形结构,决策树由结点和有向边组成,结点有两种类型:内部结点和叶结点,内部结点表示一个属性或特征,叶结点表示一个类。
2015-01-11 21:07:52
354
原创 机器学习-线性回归
机器学习中的算法分监督学习,非监督学习,半监督学习,强化学习。监督学习的任务是根据给定样本集学习一个模型,使该模型能够对任意给定的输入,对其相应的输出做出一个很好的预测。用图形表示就是(x^i,y^i)例如,给定房屋价格和面积数据集(此数据集来自斯坦福大学-机器学习课程讲义) 根据给定的数据,我们可以预测
2015-01-04 22:52:52
651
原创 求数组大小
#include using namespace std;int main(){ int array[2][3] = {{1,2,3},{4,5,6}}; int i=sizeof(array); //i表示整型数组A所占的总空间的字节数 cout<<"i=sizeof(A)= "<<i<<endl; int m=sizeof(int); cout << m
2014-07-24 11:03:42
411
原创 数据结构 栈
栈是数据项序列,只能在序列的一端访问这些数据项,可以把栈想象为数据项的集合,这些项一个堆到另一个上,只能访问最上层的项。栈有从栈顶插入和删除项的操作。push () 操作在栈顶位置增加1项。一旦把新项加入栈,就只能看到和访问这个新项。栈中以前的所有项向下移动,看不到它们。pop() 操作从栈中删除1个元素。top() 操作可以用来显示栈顶的元素#include #include #
2014-07-22 16:41:57
419
原创 数据结构 栈
栈是数据项序列,只能在序列的一端访问这些数据项,可以把栈想象为数据项的集合,这些项一个堆到另一个上,只能访问最上层的项。栈有从栈顶插入和删除项的操作。push () 操作在栈顶位置增加1项。一旦把新项加入栈,就只能看到和访问这个新项。栈中以前的所有项向下移动,看不到它们。pop() 操作从栈中删除1个元素。top() 操作可以用来显示栈顶的元素#include #include #in
2014-07-22 15:12:35
319
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅