自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Mr. Coding

Always Try To Understanding The World By Coding.

  • 博客(15)
  • 资源 (1)
  • 收藏
  • 关注

原创 JS控制HTML元素的显示和隐藏

利用来JS控制页面控件显示和隐藏有两种方法,两种方法分别利用HTML的style中的两个属性,两种方法的不同之处在于控件隐藏后是否还在页面上占空位。   方法一:         document.getElementById("EleId").style.visibility="hidden";          document.getElementById("EleId").

2013-08-08 23:40:12 1008

原创 白话红黑树系列之二——红黑树的构建

上一篇写了关于红黑树基本性质的东西,这篇来说一说如何创建一棵红黑树吧。  如果对红黑树的基本性质还有疑问,请先查看一下我的前一篇:http://blog.csdn.net/arge129/article/details/7572687。  红黑树是一种二叉查找树,那么我们可以使用插入的方法来创建一棵红黑树,为此,我们先来介绍关于红黑树的一些基本操作。  1. 旋转  旋转是一种能保

2012-05-16 20:21:09 3330

原创 白话红黑树系列之一——初识红黑树

原文地址:http://blog.csdn.net/arge129/article/details/7572687红黑树是一种二叉查找树,它能保证在最坏的情况下,基本的动态操作的时间为O(lgn)。1. 红黑树的性质红黑树是一种二叉查找树,与普通二叉查找树不同之处在于以下几个方面:a) 红黑树在每一个结点上增加一个域来存储该结点的颜色,颜色可以是红(RED)的或者是黑(BLACK)

2012-05-16 16:50:20 3158

原创 二叉查找树(五)

接上一篇,继续讲二叉查找树的操作,之前的博客都讲得差不多了,本篇就讲一下删除操作,以及求最矮公共父结点(LCA:lowest common ancestor)的操作吧。删除  将一个结点从二叉查找树中删除之后,剩下的结点可能会不满足二叉查找树的性质,因此,在删除结点之后要对树进行调整,使其满足二叉查找树的性质。根据结点的孩子的数量,将删除操作分为三种情况,我们记要删除的结点为z,实际上

2012-05-12 11:04:40 854 2

原创 二叉查找树(四)

接上一篇,让我们来继续讨论二叉查找树的基本操作,需要注意的一点是,上篇中的遍历操作是针对任意一棵二叉树都可以的,凡是没提及需要二叉查找树性质的地方,应该都是满足二叉树的操作。上篇主要讨论了二叉树的遍历操作,这篇,我们来讨论二叉查找树的查找、求最大最小值以及求前驱和后继等操作。查找  二叉查找树的查找操作可以在O(h)时间内完成,其中h为树的高度。查找的算法很简单,根据二叉查找树的性质,

2012-05-12 11:03:05 545

原创 二叉查找树(三)

我们知道二叉查找树是一种数据结构,它支持多种动态集合的操作,包括:查询,最大值,最小值,前驱,后继,插入和删除等操作。那么我们在前一篇已经创建了二叉查找树,那么我们来实现二叉查找树的各种操作吧。(*^__^*) (以下纯属个人理解,个人原创,理解不当的地方,请指正,谢谢)  我们来看二叉树的遍历操作,所谓遍历,顾名思义,就是能够依次的访问二叉查找树中的各个结点。在数据结构课堂上,我们知道,遍历

2012-05-12 11:01:51 647

原创 二叉查找树(二)

在上一篇中,我们说到了二叉树的性质,存储以及定义的结点,有了这些之后,我们便可以来创建一棵二叉查找树了。  首先,我们知道,按照我们定义的存储结构,如果我们知道了整棵树的根结点,那么我们就可以访问到整棵树的所有结点了,因此,将二叉树的类写成如下形式: 1 /** 2 * 二叉查找树 3 * @author Alfred 4 */ 5 public class BSTree

2012-05-12 11:00:57 549 1

原创 二叉查找树(一)

一个二叉查找树是按照二叉树的结构来组织的,不熟悉二叉树的童鞋请查下资料,这里不多讲了。先来讲一下二叉查找树的性质吧。二叉查找树的性质  用比较通俗易懂的语言来描述一下就是,二叉查找树的左子树上的结点不比父结点大,右子树上的结点不比父结点小,即,设x为二叉查找树中的一个结点,如果y是x的左子树中的一个结点,则key[y]  知道了二叉查找树的性质,我们就可以来编程了,但是在这之前我们

2012-05-12 10:59:42 834 1

原创 equals与“==”之惑

Java中存在两种判断相等的方式,一个采用运算符“==”进行判断,另一个是采用equals方法进行判断。一直对这两种判断方式感到十分迷惑,最近有空好好研究了一番。“==”操作符比较的是两个变量的值是否相等,对于对象的引用则表示的是对象在堆中存储的地址是否相等。equals方法是Object的一个方法,对于没有重写这个方法的类来说,equals方法的作用和“==”是一样的,因为这个方法就是用

2012-05-12 10:57:47 327

原创 选择实现—简单工厂

之前写了好多关于排序算法的文章,基本上都是总结性质的,其实排序算法的研究很细致,但是我的博客都基本上只是给出了大体的思路和Java程序实现,算法写起来比较繁琐,感兴趣的话,自己去研究下吧,我推荐算法导论这本书。  看到这么多的排序算法,如果要将其真正用到Java程序里边的话,未免也太复杂了,因为要为每一种算法在使用之前都要先创建一个实例,然后才能使用,这样就暴露了实现,不符合面向对象的基本要求

2012-05-12 10:55:39 324

原创 有意思的排序算法-快速排序

快速排序对于含有n个元素的数组,最坏情况的运行时间为O(n2),虽然这个最坏情况的运行时间比较差,但是快速排序通常是用于排序的最佳的实用选择,这是因为其平均性能相当好,而且我们可以采用随机化的快速排序算法,来减少出现最坏情况的机会,其期望运行时间为O(nlgn),而且该记号中含的常数因子很小。  像合并排序算法一样,快速排序也是基于分治法进行排序的。其排序过程分为三个步骤:  分解:数组A

2012-05-12 10:50:14 324

原创 有意思的排序算法-堆排序

堆排序,是一个非常优秀的排序算法,像合并排序而不像插入排序,其运行时间为O(nlgn),像插入排序而不像合并排序,它是一种原地排序算法,所以说,堆排序将插入排序和合并排序的优点结合起来了。  堆排序借助于堆数据结构,(二叉)堆是一个数组,它可以被视为一棵完全二叉树,树中每个节点与数组中存放该节点值得那个元素对应。  堆排序算法可以分为以下几步:  1)  建立原先数列对应的最大(或最小

2012-05-12 10:49:01 341

原创 有意思的排序算法-合并排序

合并排序也可以用打牌的过程来说明,假设桌面上朝上放着两摞已经排好序的牌,现在要将这两摞已排好序的牌合成一摞,首先,取两摞中位于最上面的两张中最小的一张并将其加入到新的一摞中,然后接着从两摞中再取一张最小的加入到新的一摞中,因为第二张,肯定比第一张要大,因此要加入到第一张的后面才行。  从上面可以看出,合并排序是利用分治法进行排序的算法,直观地操作如下:  分解:将n个元素分成各含n/2个元

2012-05-12 10:46:51 369

原创 有意思的排序算法-插入排序

所谓排序,无非就是把一个无序的序列排成一个有序的序列,从本文开始,将着重介绍经典的一些排序算法。      插入排序,是指将待排序列中的数,一个一个插入到适当位置的过程。说起算法的概念来,总是让人摸不着头脑,还是从生活中的例子来理解吧。相信每个人都玩过牌,我们在开始摸牌的时候,左手是空的,牌面朝下放到桌子上,接着,一次从桌子上摸起一张牌,并将它插入到左手一把牌中的正确位置上,为了找到这张牌的正

2012-05-12 10:44:54 241

原创 简化的打印语句-静态导入

import关键字对于学过Java的人来说并不陌生,它的作用主要是保持语义不变的基础上减少编程时键入的代码量,所谓的静态导入,是在import的基础上增加static修饰符,用来导入定义在接口或者类里边的静态成员(属性,方法,内部类),值得注意的是,这个特性是在Java 1.5之后的版本里边新增的特性,具体的设置方法参见http://blog.csdn.net/abbuggy/article/de

2012-05-12 10:41:39 368

pro_android_cpp_with_the_ndk.pdf

第1章 Android平台上的C++入门 1.1 Microsoft Windows 1.1.1 在Windows平台上下载并安装JDK开发包 1.1.2 在Windows平台上下载并安装ApacheANT 1.1.3 在Windows平台上下载并安装AndroidSDK 1.1.4 在Windows平台上下载并安装Cygwin 1.1.5 在Windows平台上下载并安装AndroidNDK 1.1.6 在Windows平台上下载并安装Eclipse 1.2 AppleMacOSX 1.2.1 在Mac平台上安装Xcode 1.2.2 验证Mac平台的Java开发包 1.2.3 验证Mac平台上的ApacheANT 1.2.4 验证GNUMake 1.2.5 在Mac平台上下载并安装AndroidSDK 1.2.6 在Mac平台上下载并安装AndroidNDK 1.2.7 在Mac平台上下载并安装Eclipse 1.3 UbuntuLinux 1.3.1 检查GNUC库版本 1.3.2 激活在64位系统上支持32位的功能 1.3.3 在Linux平台上下载并安装Java开发工具包(JDK) 1.3.4 在Linux平台上下载并安装ApacheANT 1.3.5 在Linux平台上下载并安装GNUMake 1.3.6 在Linux平台上下载并安装AndroidSDK 1.3.7 在Linux平台上下载并安装AndroidNDK 1.3.8 在Linux平台上下载并安装Eclipse 1.4 下载并安装ADT 1.4.1 安装Android平台包 1.4.2 配置模拟器 1.5 小结 第2章 深入了解AndroidNDK 2.1 AndroidNDK提供的组件 2.2 AndroidNDK的结构 2.3 以一个示例开始 2.3.1 指定AndroidNDK的位置 2.3.2 导入示例项目 2.3.3 向项目中添加原生支持 2.3.4 运行项目 2.3.5 用命令行对项目进行构建 2.3.6 检测AndroidNDK项目的结构 2.4 构建系统 2.4.1 Android.mk 2.4.2 Application.mk 2.5 使用NDK-Build脚本 2.6 排除构建系统故障 2.7 小结 第3章 用JNI实现与原生代码通信 3.1 什么是JNI 3.2 以一个示例开始 3.2.1 原生方法的声明 3.2.2 加载共享库 3.2.3 实现原生方法 3.3 数据类型 3.3.1 基本数据类型 3.3.2 引用类型 3.4 对引用数据类型的操作 3.4.1 字符串操作 3.4.2 数组操作 3.4.3 NIO操作 3.4.4 访问域 3.4.5 调用方法 3.4.6 域和方法描述符 3.5 异常处理 3.5.1 捕获异常 3.5.2 抛出异常 3.6 局部和全局引用 3.6.1 局部引用 3.6.2 全局引用 3.6.3 弱全局引用 3.7 线程 3.7.1 同步 3.7.2 原生线程 3.8 小结 第4章 使用SWIG自动生成JNI代码 4.1 什么是SWIG 4.2 安装 4.2.1 Windows平台上SWIG的安装 4.2.2 在MacOSX下安装 4.2.3 在UbuntuLinux下安装 4.3 通过示例程序试用SWIG 4.3.1 接口文件 4.3.2 在命令行方式下调用SWIG 4.3.3 将SWIG集成到Android构建过程中 4.3.4 更新Activity. 4.3.5 执行应用程序 4.3.6 剖析生成的代码 4.4 封装C语言代码 4.4.1 全局变量 4.4.2 常量 4.4.3 只读变量 4.4.4 枚举 4.4.5 结构体 4.4.6 指针 4.5 封装C++代码 4.5.1 指针、引用和值 4.5.2 默认参数 4.5.3 重载函数 4.5.4 类 4.6 异常处理 4.7 内存管理 4.8 从原生代码中调用Java 4.8.1 异步通信 4.8.2 启用Directors 4.8.3 启用RTTI 4.8.4 重写回调方法 4.8.5 更新HeIIojniActivity 4.9 小结 第5章 日志、调试及故障处理 5.1 日志 5.1.1 框架 5.1.2 原生日志API 5.1.3 受控制的日志 5.1.4 控制台日志 5.2 调试 5.2.1 预备知识 5.2.2 调试会话建立 5.2.3 建立调试示例 …… 第6章 BionicAPI入门 第7章 原生线程 第8章 POSIXSocketAPI:面向连接的通信 第9章 POSIXSocketAPI:无连接的通信 第10章 POSIXSocketAPI:本地通信 第11章 支持C++ 第12章 原生图形API 第13章 原生音频API 第14章 程序概要分析和NEON优化

2014-06-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除