自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (1)
  • 收藏
  • 关注

原创 散列(hash table)

概念        理想中散列就是一个包含一些项的具有固定大小的数组。只不过数组中各元素的下标是通过对元素的关键字进行计算得到的(计算下标的函数叫散列函数)。        与栈,队列,数组等数据结构相比,散列可以以常数平均时间进行插入、删除、查找。因为通过散列函数,可以很简单地计算出要操作的元素的下标,从而可直接进行插入、删除、查找。        但散列不能很好地支持需要排序信息的

2017-02-22 18:40:01 284

原创 快速幂

试题        求a^b的后三位数。a,b是整数。        这题也就是计算a^b%1000的值。解法一        先求出a^b的值,然后计算a^b%m即可。        如果a,b足够大,那么a^b将无法计算出来。所以解法一只适用于a,b都很小的情况。解法二        解法二会利用如下公式进行计算:其证明过程如下:因此a^b%

2017-02-19 17:23:54 17486 6

原创 AVL树与伸展树入门

基础二叉查找树        对树中的第一个节点X,它的左子树中所有项的值小于X中的项,而右子树中的项都大于X中的项。        二叉查找树的平均深度是O(log N),因此二叉查找树的操作可以采用递归形式——因为递归不了几次。增删改查        查找类似于二分法。比根节点大,则找右子树,否则找左子树。        修改也类似于查找,只不过在找到某个元素后对其进行

2017-01-18 18:34:33 1216

原创 哈夫曼编码

基本概念权:节点

2016-12-29 21:04:16 521

原创 树的基本知识

概念        树:树是一些节点的集合。这个集合可以是空集;若集合不是空集,则树由根节点r以及0个或多个子树组成。        边:两个节点之间的连线就是边。        树叶:没有儿子的节点称为树叶。         节点的度:节点拥有的子树数称为节点的度。        度:节点的度的最大值称为树的度。        兄弟:具有相同父亲节点的节点称为兄弟。

2016-12-15 15:39:17 1406

原创 进程与线程

multiprocessing        进程模块。Process        表示一个进程。常用方法        start():启动一个进程。        join():等待子进程结束后,再执行父进程。如:import osfrom multiprocessing import Process # Process是跨平台的进程def fun(*a

2016-10-20 17:39:25 292

原创 io

StringIO        在内存中读取str。需导入io模块。

2016-10-17 23:07:23 245

原创 元类

type        type函数即可返回一个对象的类型,也可动态地创建一个新的类。如:def say(self): # 因为该方法要传入到类中,所以必须定义一个self参数 print("say hello")d = type('Demo', (object,), dict(say=say))d1 = d()d1.say() # say hello

2016-10-14 14:52:45 706

原创 常用模块——sys,pickle,json

sys模块        argv:以命令行形式运行时,跟在python命令后的数据,将这些数据以list形式返回,第一个参数是当前运行的python文件名。如:D:\python\workspace>python demo.py xx oo yy 11-231['demo.py', 'xx', 'oo', 'yy', '11-231'] # 输出python后跟的所有参数,以空格分隔一个

2016-10-10 17:35:05 338

原创 内置函数

常用列表        系统函数是可以直接调用式。        del():删除相应的变量,删除后该变量就相当于未进行定义。        len():获取序列的长度。        type():获取指定变量的类型,如tuple,list等。        str():将指定的变量转换为字符串。        help():查询文档。比如help(dict.keys)就

2016-10-08 18:39:11 1675

原创 generator,迭代器,装饰器与偏函数

生成器        generator。它保存的是列表元素生成的算法,每调用一次next()函数时,就会根据算法返回一个元素,避免了一次性生成过多的元素,导致内存溢出。        参考1定义列表        在for循环中,可以使用如下方法生成一个列表:def f(m): return m*2L = [f(m) for m in 'abc']prin

2016-10-08 17:32:13 292

原创 异常,类与枚举

基础        除了关键字不一样外,其余的与java完全相同。        try-except-finally分别表示java中的try,catch,finally。java中的throw在python中用raise代替。try: f = file('x.txt')except Exception, e: # 捕获异常,并将异常信息用e变量存储 print eelse:

2016-10-04 12:06:33 1309

原创 文件与file与os

常用方法        open():打开指定的文件,返回一个file object。该方法是内置函数,不需要导入做任何模块即可使用,跟help方法一样。在打开文件时,可选择传入的模式。模式有三种:        a——文件不存在则新建,已有则将内容追加到文件结尾,可写不可读。        w——新建不存在的文件,清除已有文件的旧内容,可写不可读。清空原文件内容,重新写入新的内容。如

2016-10-03 21:57:29 551

原创 正则表达式与MatchObject

基础        python中,正则表达式默认使用的是贪婪匹配,可以在元字符(如+,*,{}等)后面跟?以使用非贪婪匹配。如:#coding:utf-8import res = r'ad?'print re.findall(s,'addddd') # ad# 如果将s=r"ad??",则返回的结果是are模块        对正则表达式的操作都需要re模块的支持。该模块

2016-10-02 17:02:39 693

原创 内置属性,包与模块

模块        python的脚本文件都是以扩展名为py的文本文件保存的,一个脚本可以单独运行也可以导入到另一个脚本中运行。当脚本被导入运行时,被导入的文件就被称为模块。因此,模块名与脚本的文件名相同。import        导入相应的模块,与java中的import关键字类似,但python会在导入时会将被导入模块中的所有代码都执行一遍。如:print("fdasf")

2016-09-30 17:17:36 556

原创 dos下常用命令

cd:进入具体的目录        start:运行某个具体文件。如start 1.txt就会用记事本打开1.txt文件。        mkdir:创建一个文件夹。        md:创建一个文件夹。        del:后跟文件夹,则删除文件夹内部的内容,但不删除文件夹本身。如果文件夹不为空,根据提示输入即可。后跟文件,则直接删除文件。        rd:删除指定的文

2016-09-22 15:37:26 222

原创 函数

定义        格式为——def  函数名(参数列表):其中冒号指的是代码块的开始,函数本身也是一个代码块,所以需要以冒号开始。        通过return定义函数的返回值,如果没有return则默认返回提None。系统函数        系统函数是可以直接调用的,不需要使用变量点的形式。        del():删除相应的变量,删除后该变量就相当于未进行定义。

2016-09-20 11:08:02 567

原创 循环与布尔值

基础        代码块以冒号开始,并且缩进相同的代码属于同一代码块。因此,if等表达式后需要跟一个冒号。逻辑运算        True:真。非零与非空的变量都是真。        False:假。0、None或者空的量都是False。如a={"dict":1}a.clear()if a: print(a)else: print("

2016-09-16 17:03:57 1509

原创 数据类型

变量        python中以数据为主体,不同的数据存储在不同的地址空间中,而变量名只是地址空间的一个标签,通过这个标签可以访问到这个内存,从而拿到内存中存储的数据。并不是说会为该变量分配一个固定的地址空间,而对变量赋值就是向该地址空间中添加不同的数据。如:#ecoding:utf-8a=123b=123print(id(a))print(id(b))a=345print

2016-08-31 23:04:47 350

原创 linux下常用命令

ls:列出当前目录下的所有文件,文件夹        mkdir:生成指定名字的文件夹。        rm:移除指定的文件(不是文件夹)        rmdir:移除指定的文件夹——该文件夹必须是空的。        rm -rf:移除非空的文件夹。r表示向下遍历,不管有多少级目录都会直接删除,f表示强制删除。vim        打开某个文件进行编辑,如果该文件不存在

2016-08-31 22:34:30 140

原创 缩进,注释,代码块,编译与优化,编码,运算符,切片

缩进        python不使用{}区分代码块,而使用缩进表示。因此python的缩进影响着代码的执行,影响着代码的内在逻辑,这与java、c是完全不同的。        1,tab键与空格不能混用。        2,缩进相同的代码属于同一代码块,同一代码块内的语句必须缩进相同。如下面的else中的代码码缩进必须相同,但不必与if中的相同。if True: prin

2016-08-31 14:56:35 386

原创 二叉树入门

二叉链表        对二叉树的存储,即可采用顺序存储结构(数组),也可采用链式存储结构(链表)。        在链式存储结构中,每一个节点都含有一个数据域,两个指针域——分别用来指向该节点的左、右子树。利用这种节点构成的链式存储结构称为二叉链表。创建        为简单起见,给定一数据集,以该数据集中的元素创建一完全二叉树。这里不考虑非完全二叉树的情况。代码如下:str

2016-05-31 23:28:34 783

原创 KMP字符串匹配

思路        判断s中是否含有字符串t。        一般思路为:从s中首字符开始,依次与t中进行比对,直到t结尾或者某一个位置两者不同 。如果到t的结尾,则表示s中含有t。如果有一个位置不相同,那么从s中下一个字符开始,再次与t中字符比对。如下: i = 0,j = 0; for(;i<pl;i++){//pl为p字符串的长度,依次遍历它的每一个字符串

2016-05-23 22:59:55 287

原创 栈与队列

栈基础        栈后进先出的一种数据结构。可以用链表来实现,只需要将新插入的元素插到表头,然后将链表的指针更新到最新的位置即可。        取的时候,从链表的指针开始,这样就保证了后进先出。        使用链表形式实现栈时,不需要一个单独的指针用来存储栈底与栈顶,只需要记录栈顶元素的地址即可。每一次插入都将新元素的next属性设置为原来的栈顶,而新栈顶为新插入的元素。

2016-05-20 14:25:03 381

原创 smali入门

参考        参考1        参考2签名        方法签名与类签名都与jni中一样。略字段含义        .field  定义变量,如.field private isFlag:z表示private boolean isFlag;冒号后面的表示变量类型,前面的表示变量名        .method   定义方法。如.method privat

2016-05-18 11:07:13 1590

原创 排序算法的应用

使用堆排序求前k个最大(小)数原理        假设序列中有n个元素,取其前k个组成一个最大堆。由于最大堆的堆顶为序列中最大元素,所以组成的最大堆的堆顶是前k个元素中最大的元素。依次用第k+1到第n个元素与堆顶进行比较,如果比堆顶元素大,那么该元素肯定不会是前K个最小的元素;如果比堆顶小,那么堆顶的元素肯定不是前k个最小的元素,此时更新堆顶元素,并重新计算使新堆成为最大堆。依次进行,直到

2016-05-17 17:55:22 307

原创 排序算法(二)

基数排序原理        参考        对每一个数字,先按个位进行排序(个位相同的放在一起,不需要排序),再按十位进行排序,直到最高位。如果某个数字的位数较少,则该位数按0处理。如(11,1)按十位排序时,把1的十位当作0处理。        在处理时,可以将该位上相同的数字按链表进行处理。类似于Java中HashMap的数组结果。如[10,100,1000,301]按

2016-05-16 13:46:26 333

原创 支付宝

参考        参考准备工作        导入相应的jar包,并在清单文件中添加两个activity,如下: <activity android:name="com.alipay.sdk.app.H5PayActivity" android:configChanges="orientation|k

2016-05-15 18:56:02 252

原创 微信第三方

微信基础        使用前先下载sdk,一个jar包。        在微信开放平台注册应用,应用审核通过后,会拿到一个APP_ID与AppSecret。微信所有功能的使用都是通过IWXAPI的对象进行操作的。拿到这个对象后,调用它的registerApp(APP_ID)将自己的应用注册到微信列表中。其后才可进行别的操作。示例如下: private IWXAPI api; C

2016-05-15 18:25:53 837

原创 排序方法(一)

参考        参考冒泡排序原理        比较相邻两个元素的大小,进行调整位置。代码        略。快速排序原理        通过一次排序将数据分成两个独立的部分,再分别对两部分进行排序,直到结束。代码void quicksort(int a[],int left,int right){ if(right <= left){

2016-05-14 23:16:10 291

原创 ctype,sdtio与stdlib

ctype        ctype.h中的函数是用来分析字符。常用方法如下:        tolower():返回参数的小写形式。如果本身是小写,就直接返回该小写字符。        toupper():返回参数的大写形式。        isdigit():是否是阿拉伯数字。        isalpha():是否是字母。        isalnum():是否是字母

2016-04-21 08:25:57 1488

原创 math.h,stdarg.h与assert.h

math.h        包含常用的数学函数。这些函数的单位为弧度(1弧度 = 180/π  ≈ 57.3度)。常用函数如下:        double acos(double x):返回arccos(x)的值,即反余弦的值,从0到π的弧度。        double asin(double x):返回arcsin(x)的值,从-π/2到π/2的弧度。        doub

2016-04-20 18:11:28 383

原创 预处理

基础        预处理以#开头,到其后第一个换行符为止。也就是说,预处理的指令仅限一行。但可以使用反斜杠(\)和换行符将多个物理行,合成一个逻辑行。如:#define TEST "tetafa\fdafa"那么在实际使用中TEST的值是:tetafafdafa。        预处理指令可出现在源文件的任何地方,指令定义的作用域从定义出现的位置开始一直到文件的结尾。#de

2016-04-18 22:40:47 254

原创 联合,枚举与typedef

联合        联合,是一个能在同一块存储空间存储不同类型(不同时)数据的类型。因此为联合的存储空间为所有成员中占据空间最大的。如:union author { char* name; int a;};void test() { union author a = { "vafda" }; a.a = 12;//此时a所代表的存储空间存储的是int类型 printf

2016-04-12 18:21:44 307

原创 文件

基础        c程序自动打开3个文件:标准输入,标准输出与标准错误输出。常用函数fopen()        打开文件,第一个参数为文件的绝对路径,第二个参数为打开模式。如下:        r:只读不能写,文件还必须存在。如果文件不存在,返回的FILE*型指针为NULL。        w:可写不可读文件,如果文件不存在,就新建一个;如果文件存在,就清空文件内容之后

2016-04-08 18:26:51 290

原创 存储类型

基础        不同的存储类型提供了变量的作用域,链接以及存储时期的不同组合。存储时期就是变量在内存中的保留时间,作用域和链接一起表明变量程序的哪些部分可以通过变量名来使用该变量。作用域        它描述了程序中可以访问一个标识符的一个多个区域。主要分为:代码块作用域,函数原型作用域和文件作用域。代码块作用域        代码块是包含在开始花括号和结花括号之内的一段代

2016-04-04 23:55:39 610

原创 入门(一)

const        类似于java中的final,被修改的变量无法进行修改。                1,修饰普通变量,用于声明一个常量,类似于#define。如const double PI = 3.14;。        2,指向常量的指针,则不可以使用指针修改它所指向数据的值,但允许修改指针的数据。如: int a[] = {3,4,5}; const int*

2016-03-30 11:19:32 447

原创 字符串入门

基础        c语言中没有为字符串定义专门的数据类型。字符串的字符存储在相邻的内存中,而数组是由相邻的存储单元组成,所以将字符串存储在字符数组中是很正常的事。        一个字符串的终止字符必须是'\0',所以定义字符数组时,它的长度一定要比字符串中字符的个数多1,用于存储最后一个'\0'。        如果没有加上'\0',在输出字符串时系统会沿着字符数组的地址一直读下去

2016-03-03 17:33:43 475

原创 js入门(十)——原型

引导        任何方法,只有加上()才表示执行;不加的话,只是代表着将该方法的地址赋值给新的变量。        在下面代码中 function Person(name){ this.name = name; this.say = function(){ document.write("my name is"+this.name); } } v

2015-12-02 19:02:59 276

原创 js入门(八)——Global与Date

Global基础         严格意义上,js中所有的全局变量、全局方法都是不存在的,因为这些变量方法都存在于Global对象中。Global对象不能直接new,也不能直接使用,在Scripting引擎初始化时被实例化,并且使其中的方法、属性可立即使用。        对于Global对象中的方法,可以直接使用。如前面使用的parseInt()就属于Global中的方法。   

2015-11-25 19:00:36 595

空空如也

空空如也

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

TA关注的人

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