- 博客(22)
- 问答 (1)
- 收藏
- 关注
原创 Kruskal算法模拟讲解
Kruskal 算法是一个求最小生成树的算法,即求最小的开销等 算法可以这样,要求得最小生成树,那么n个节点只能包括n-1条边 所以我们应该转换为寻找这最短的n-1条边,因此,可以先对所有的 边进行从小到大排序,每次取出一条边来进行试探,看是否够成环, 如果不构成环,那么肯定是最短的路径了,因为每次都是取最小 的边来试探,最终可以求得最小的生成树代价和。
2013-08-31 21:00:35 1209
原创 Dijkstra算法模拟讲解
dijkstra算法,是一个求单源最短路径算法 其算法的特点为: 层层逼进,有点类似宽度搜索的感觉 其需要的数据结构为: int map[N][N] 所有点之间的权表 int dis[N] 所有点到源点的最短距离 int prev[N] 存储每个点的前一个经过的点,用于输出路径 int used[N] 用于存储已经求出最短路径的点 则总的点减去used中的点,为还没有找出最短路径的点 初始化时:map为实际存储的权,如果某一边没有,则设置为无穷大INF,自身设置0
2013-08-30 15:11:47 1091
原创 编程书籍积累
25 Free Computer Science EbooksBook Training - On VideoCheat Sheets (Free)CodePlex List of Free E-BooksFree Tech BooksGalileo Computing (German)How to Design Programs: An Introduction to
2013-08-29 09:24:19 1841
原创 堆排序的详细讲解及实现
堆排序:特点 堆排序(HeapSort)是一树形选择排序。堆排序的特点是:在排序过程中,将R[l..n]看成是一棵完全二叉树的顺序存储结构,利用完全二叉树中双亲结点和孩子结点之间的内在关系(参见二叉树的顺序存储结构),在当前无序区中选择关键字最大(或最小)的记录堆排序与直接选择排序的区别直接选择排序中,为了从R[1..n]中选出关键字最小的记录,必须进行n-1次比较,
2013-08-27 16:18:33 3206 1
原创 快速排序算法实现,模拟讲解
快速排序是一个比较好的算法,但不好理解,我用模拟的方法来讲解,这样比较容易懂,其平均时间复杂度为O(nlog(n)),最极端状态为O(n2)对于排序算法来说是比较快的,但排序算法是递归的调用,会占用大量资源
2013-08-25 21:09:06 2034
原创 冒泡排序改进
平常写冒泡排序法时,都是直接两个for循环就搞定了,但这其实还是可以优化一下的,可以在某一次遍历过程中,如果没有发现数据进行交换,则可以确定排序已经完成,这样就可以跳出循环了。代码如下:/* Filename:bubleSort.cpp Author: xiaobing E-mail: xiaobingzhang29@gmail.com Date: 2013-08-25*
2013-08-25 19:37:20 1188
原创 poj1125 Floyd算法
对Floyd算法的理解: Floyd算法是一个已多源求最短路径的算法,算出每个节点到其他点的最短距离, 时间复杂度为n的3次方,可以用于求解那些从任意点中选出一个最短的路径出发 的问题,程序实现简单,但不能求解数据量较大的图
2013-08-23 20:22:08 1314
原创 poj2488深度搜索
关于dfs的理解 准备条件: 1、实现寻找目标步骤的方法,即移动的方法 2、一个可以容纳所有可能节点的容器 3、一个用于存储遍历结果的路径的容器 方法: 1、运用递归函数,逐个遍历,将节点选择的地方放在递归函数内部, 当检测到当前节点可行时,需标记为访问过,并将改节点存入路径中, 然后继续寻找下一个可能的节点,找完后,应将遍历过的节点恢复, 因为有
2013-08-23 19:26:48 1084
原创 用正则匹配一串字符串中的ip地址
IP地址有4段组成,每一段数字的范围为0~255,在一段文本中提取ip地址可以这样$src = 'src = alsdlk ks sdf2.3.3.4 234.193.1.120.1232 d.233.43.23.34 23.34.23.33 dfkl lksd\flk \lkjs.c lksf.c \ kldslfj.c lkdslkf.c lkkldsf.c';$src =~ m/
2013-08-21 21:24:59 5009
原创 用正则匹配多行文本
如果有这样一个字符串 $var = "src = arr.c build.c eval.c field.c \ missing.c msg.c re.c version.c"用一般的^\w+\s*=\s*.*$只能匹配上面的那句,而下面的那一句就无法匹配了方法一:使用的是perl$var = "s
2013-08-21 21:02:10 6839
原创 Android 中的MVC与数据流动
今天看了一个Android的Training生命周期转换的例子,顿觉得他的设计非常巧妙,我的分析如下: 1.在com.example.android.lifecycle包中有: 3个正常的全屏activity,一个类似dialog的activity 2.在com.example.android.lifecycle.u
2013-08-20 16:10:29 1354
原创 Activity开发中需要保存状态的情形
11.Activity开发中需要保存状态的情形 1.当进入onPause()方法后,应该保存一些状态,比如停止视频播放,停止网络连接,将当前的内容存入Contentprovider中,但不能在这里使用大量的数据库操作,因为Activity之间的切换是在调用完onPause()方法后,在调用第二个Activity的onCreate()方法,如果这里太长时间,会影响activity间的切换,并导致不
2013-08-19 23:23:54 1176
转载 shell中的大括号,小括号
原文来自:http://blog.sina.com.cn/s/blog_4a2a29f00100o2os.html觉得写得不错,我算大致模仿了一下1.shell中的大括号和小括号1.${var}2.$(cmd)3.() 和 {}4.${var:-string}, ${var:+string}, ${var:=string}, ${var:?string}5.$((e
2013-08-10 00:06:22 1645
原创 shell 文件名分割,重命名移动批量文件
2.文件名分割1.分割出文件名和扩展名file="sample.jpg"name=${file%.*}echo "File name is: $name"输出:File name is: sample这里的${file%.*}的意思是:用file的内容,从右边匹配字符串,这里是.*,说明遇见'.'号结束,然后取出剩余的左边的部分作为结果返回ext
2013-08-10 00:02:03 8194
原创 linux shell——md5sum,sha1sum,sort,uniq
用md5sum和sha1sum来检测文件是否被修改,用sort和uinq来对文件内容操作
2013-08-09 23:54:27 3117
原创 Unix哲学
Unix哲学: Doug McIlroy, the inventor of Unix pipes and one of the founders of the Unix tradition, had this tosay at the time (i) Make each program do one thing well. To do a new job, build afresh
2013-08-09 12:39:30 1280
原创 变量,指针,指针变量
1.C语言中有一般变量,指针,指向指针的变量,总结一下 如右图: 定义一个变量 int a = 2000; 定义一个指针变量 int *p = &a; 定义一个指向指针的变量 int **q = &p;
2013-08-08 12:09:04 1226
原创 梦想的理解
在现在这个社会上,我们周围出现了无数的成功者,他们要么腰缠万贯,要么学识渊博,要么能说会到,要么威望波高,总之他们有你感觉几乎不能想想得到的财富、地位、学识、经验,成就等。这时,他们被作为我们的楷模,时常会发一些指导,指导当代的年轻人应该怎样怎样,不可否认,他们把他们的经验讲述了出来,让很多人学到了不少,少走了很多弯路,也陆陆续续的成长为他们一样的人,但独有一点,我不理解,
2013-08-04 23:37:35 1562
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人