6 GuityCrown

尚未进行身份认证

我要认证

额...其实我还是个学生,虽然后面几年是要搞嵌入式android的糙汉子...但是以前搞得比较杂,既有C语言,java这些搞android必备的...也有本专业要用到的各种焊电路板高级技工技能...还有各种汇编,matlab等等...还有本专业方向要搞的模式识别和图像处理...好吧,一个本科的孩子也就是接触得比较多,可是学得都不深入...嗯...以后慢慢学呗...

等级
TA的排名 5w+

VMWare下centOS连接无线局域网的解决办法

昨天在配置虚拟机下centOS的网络时,由于我的主机是连接wifi的,而晚上很多教程只说了当主机固定IP时如何配置虚拟机的网络,而我在网上看到很多连接wifi的解决办法并一一尝试后发现都没有用,于是我自己捣鼓出了另一种方法,在此记录之。1.  配置虚拟机为桥接2. centOS下输入setup设置网络为DHCP3.  centOs下输入   vi /etc/sysconfig/netw

2016-08-08 10:03:05

斐波那契堆

本文将要介绍的斐波那契堆是一种保有最小堆性质的“森林集合”。和二叉堆一样,他可以用来实现优先队列,而且比二叉堆在某些操作上有更优的时间复杂度。比如插入操作,二叉堆插入一个结点需要从底向上调整堆结构,因此需要O(lgn)的时间,而斐波那契堆则只需要O(1)的时间。下面将会解析斐波那契堆的各个基本操作及其c/cpp实现代码。下面是一个斐波那契堆的结构示意图。除了插入操作,斐波那契堆总是保持着一个性质:

2016-06-08 16:24:36

最大流之Ford-Fulkerson方法详解及实现

最大流问题常常出现在物流配送中,可以规约为以下的图问题。最大流问题中,图中两个顶点之间不能同时存在一对相反方向的边。边上的数字为该条边的容量,即在该条边上流过的量的上限值。最大流问题就是在满足容量限制条件下,使从起点s到终点t的流量达到最大。在介绍解决最大流问题的Ford-Fulkerson方法之前,先介绍一些基本概念。1.  残存网络与增广路径根据图和各条边上的流可以画出

2016-06-03 19:33:40

结点对最短路径之Floyd算法原理详解及实现

上两篇博客介绍了计算单源最短路径的Bellman-Ford算法和Dijkstra算法。Bellman-Ford算法适用于任何有向图,即使图中包含负环路,它还能报告此问题。Dijkstra算法运行速度比Bellman-Ford算法要快,但是其要求图中不能包含负权重的边。单源最短路径之Bellman-Ford算法单源最短路径之Dijkstra算法在很多实际问题中,我们需要计算图中所有结

2016-06-02 14:08:57

单源最短路径之Dijkstra算法

上一篇博客介绍了适用于任何有向图(即使存在负环路)的Bellman-Ford算法,对图G=(V,E)来说,该算法的时间复杂度为O(VE)。本文介绍时间复杂度为O(v^2)的Dijkstra算法,但只适用于没有负权重边的有向图。基本上所有计算图的最短路径的算法都基于一个性质:一条最短路径的子路径肯定也是一条最短路径。该性质用反证法就可以轻易证明。反过来说,我们有可能基于一条最短路径构造出另一条到

2016-06-01 21:54:57

单源最短路径之Bellman-Ford算法

今天介绍一种计算单源最短路径的算法Bellman-Ford算法,对于图G=(V,E)来说,该算法的时间复杂度为O(VE),其中V是顶点数,E是边数。Bellman-Ford算法适用于任何有向图,并能报告图中存在负环路(边的权重之和为负数的环路,这使得图中所有经过该环路的路径的长度都可以通过反复行走该环路而使路径长度变小,即没有最短路径)的情况。以后会介绍运行速度更快,但只适用于没有负环路的图中的D

2016-06-01 13:19:03

图的最小生成树之Prim算法

图的最小生成树是指一颗连接图中所有顶点,具有权重最小的树,树的权重为所有树边的权重之和。最小生成树可以应用在电路规划中,规划出既能连接各个节点又能使材料最为节省的布局。计算最小生成树有两个经典算法,分别是Kruscal算法和Prim算法。本文将会介绍Prim算法的原理以及实现。Prim算法基于贪心算法设计,其从一个顶点出发,选择这个顶点发出的边中权重最小的一条加入最小生成树中,然后又从当前的树

2016-05-31 18:48:14

图的深度优先搜索及拓扑排序

本文将介绍图的深度优先搜索,并实现基于深度优先搜索的拓扑排序(拓扑排序适用于有向无环图,下面详细介绍)。1. 图的深度优先遍历要解决的问题图的深度优先搜索与树的深度优先搜索类似,但是对图进行深度优先搜索要解决一个问题,那就是顶点的重复访问,假设图中存在一个环路A-B-C-A,那么对顶点A进行展开后得到B,对B进行展开后得到C,然后对C进行展开后得到A,然后A就被重复访问了。。。这显

2016-05-30 23:13:42

图的广度优先遍历

图的广度优先遍历与树的宽度优先遍历类似,实现方法也类似。但是相对树,图存在一种特殊情况——环路,环路使得一个已经遍历过的结点,会在其后代结点的子结点中再次被遍历,从而产生多余的读取操作。为了解决这个问题,我们需要为结点设置一个状态以标记其是否已被遍历过。下面是图和结点及相关定义。typedef enum VertexColor{ Vertex_WHITE = 0, // 未被搜索到

2016-05-29 00:30:08

B树操作详解

B树是一颗多路的平衡搜索树,其规定树根至少有两个孩子,每个内部节点有两个或以上的孩子。用来衡量B树规模的一个指标是“最小度数”t,其表示B树所有内部节点的孩子数为t~2t个。B树的一个结点有两个存储域,分别是关键字和孩子结点,关键字用于划分孩子节点,一个关键字的左右两侧各有一个孩子。类似于二叉搜索树,一个关键字x的左孩子的关键字值都比x小,右孩子的关键字值都比x大。因此,一个结点的关键字的个数

2016-05-27 23:33:30

红黑树的插入与删除

红黑树(Red Black Tree) 是一种自平衡二叉查找树。红黑树和AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。红黑树可以在O(log n)时间内完成查找,插入和删除操作。二叉搜索树可以看 二叉搜索树AVL树可以看 AVL树的插入与删除1. 红黑树的性质红黑树的自平衡依赖于它的以下性质:性质1. 结点是红

2016-05-26 15:09:52

二叉搜索树

二叉搜索树是一种有序二叉树,通过对其中序遍历,可以得到一组非递减的数据。如下图所示的一颗二叉搜索树,中序遍历后得到的数组是 8、10、11、12、15、18。二叉搜索树的基本性质:左子树在实际编写代码时,定义一个结点的数据结构和一个二叉搜索树的数据结构,以及一些基本方法。typedef struct Node{ int value; int size; struct Nod

2016-05-25 23:37:14

AVL树的插入与删除

AVL树是一种高度平衡的二叉搜索树,其每一个结点的左树高和右树高相差不大于1。这个性质使得AVL树的搜索效率要比普通的二叉搜索树要高,因为对于一组递增的数组,其构成的二叉搜索树会是一个链表,搜索时间复杂度自然就是O(n),而其构成的AVL树则肯定是一个搜索效率为O(lg(n))的二叉树。也正因为此,为了保持其平衡的性质,AVL树的插入和删除要比普通二叉搜索树要复杂。1. 通过旋转保持AVL树的

2016-05-25 11:00:23

快速排序

1. 划分数组现在有一个目标,将一个给定数组划分成两部分,分立于某一个数的两侧,左侧的数均比该数小,右侧的数均比该数大。partition的过程如下图所示。上图中的数组使用数组的最后一个数16作为划分依据,i 为16最终所在的位置,n为数组当前遍历元素位置。首先,n=0,i=0,因为12然后,n=1,因为23>16,所以 i 不变然后,n=2,因为11

2016-05-19 22:46:59

堆排序

1. 堆堆是一种特殊的二叉树结构,其分为最大堆和最小堆两种。对于最大堆来说,父结点的值一定会比子结点大,最小堆类似。下图为一个简单的最大堆示例,父结点30要比子结点12和22要大,至于两个子结点之间的大小关系则没有要求。如果用一个数组来存储一个堆,那么我们需要知道每个元素对应的结点的父子结点分别是数组中的哪一个元素。用数组表示的堆的结构以及各个结点对应的元素下标如下图所示。

2016-05-18 20:22:17

归并排序

归并排序是分治思想的一个应用,其将原问题分解成规模比较小的问题求解,然后再组合成原问题的解。在讲解归并排序之前,先要编写一个将两个有序数组合并成一个有序数组的程序。int* merge(int *a1, int *a2, int n1, int n2){ int *result = (int *)malloc(sizeof(int)*(n1 + n2)); int *temp = res

2016-05-18 19:51:18

c实现base64

今天给自己的android项目写了一个加解密算法

2016-05-02 14:53:57

MAC Android Studio jni配置

最近在mac下配置Android Studio 1.4的jdk和jni开发时遇到了很多坑,在这里记录一下如何配置Android Studio的jdk开发,以实现Android Studio对jni开发的支持(包括编译和代码提醒等功能),虽然现在网上很多资料博客什么的都说Android Studio不支持(打脸)。先来一些有用的资料:使用gradle-experiment工具编译jni

2016-05-02 12:45:33

python 使用微信远程控制电脑

今天来分享一个“高大上”的技术——使用python编写一个可以用微信远程控制电脑的程序!先来分析一下控制的具体流程:我们使用微信给特定的邮箱发送一封邮件,其中包含了我们想要电脑执行的命令,然后电脑上的python程序获取到这封邮件,然后解析其中的命令,再交付给电脑执行。可以看出,这其中主要的技术难点就是获取邮件了!但是!这没有任何问题,大家看到我的上一篇博客《python 收发邮件》 

2016-03-30 15:26:50

python 收发邮件

今天记录一下如何使用python收发邮件,知识要点在python内置的poplib和stmplib模块的使用上。1. 准备工作首先,我们需要有一个测试邮箱,我们使用新浪邮箱,而且要进行如下设置:在新浪邮箱首页的右上角找到设置->更多设置,然后在左边选择“客户端/pop/imap/smtp”:最后,将Pop3/smtp服务的服务状态打开即可:2. poplib

2016-03-30 14:47:59

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!