- 博客(62)
- 收藏
- 关注
原创 欢迎使用CSDN-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2015-07-12 09:49:10
632
原创 [CSAPP] 2-49
有两个无符号数x,yx,y,假设无符号类型是ww位,计算x∗y x * y的高ww位。 函数原型:unsigned int unsigned_high_prod(unsigned x, unsigned y)假设我们已经有库函数:int signed_high_prod(int x, int y)解析:在计算机中,ww位unsigned类型可以表示为Σw−1i=0xi∗2i\Sigma_{i=0
2015-05-19 22:36:16
882
原创 计数排序
def counting_sort(L, start, end): #用于计数,start表示L中最小的元素,end表示L中最大的元素 len_start_to_end = end - start + 1 c = [0 for i in range(len_start_to_end)] N = len(L) #统计每个元素出现的次数 for eleme
2015-04-19 21:50:50
417
原创 分治法
分治法一般步骤:分(divide):将大问题分解为一些小问题治(conguer):分别处理(解决)这些小问题合(combine):组合各个小问题处理之后的结果常见的分治法有:归并排序(mergeSort) T(n)=2T(n/2)+Θ(n)T(n) = 2T(n/2) + \Theta(n) 由主方法可知,时间复杂度为Θ(nlog2n)\Theta(nlog_2n)二分搜索(bina
2015-04-17 12:52:20
449
原创 python第三方库使用经验
requests官方中文帮助文档: 1. requests1.1.0快速上手 2. requests1.1.0高级用法Beautifulsoup官方中文帮助文档: BeautifulSoup 使用BeautifulSoup的例子def regUrls(): html_file = open('E:\WORK_FILE\Python\Python2\userful\coursera\c
2015-04-16 20:04:35
477
原创 float,double数据类型在内存中的存储方式
floatfloat在内存中用四个byte表示 符号位 sign 指数位 exponent 尾数 mantissa 1 bit 8 bits 23 bits符号位:1正0负 指数位:范围从0~255,但实际的指数等于这里的指数减去127,所以真正的指数范围从-127~128。 尾数:23bit的尾数实际上表示24bit的数据,因为所有二进制小数都可以表示成1.xxxx x
2015-04-12 20:18:40
1332
原创 [python]python标准库(模块)简介
fnmatch文件名匹配模块fnmatch.fnmatch(filename,pattern) pattern 含义 * 匹配任意字符 ? 匹配单个字符 [seq] 匹配seq中的某一个字符 [!seq] 匹配不在seq中的任一字符glob待补充getopt获取命令行参数的模块getopt.getopt(args, options[, long_options
2015-04-11 20:54:54
503
原创 [pyhton]python cookbook学习笔记
测试一个对象是否是类字符串isinstance type(obj) == type(”)try: obj + ''except: return Falseelse: return True字符串对齐string.ljust(width,fill)string.rjust(width,fill)string.center(width,fill)去除字符串中包含的
2015-04-11 20:19:33
892
翻译 socket官方文档中文翻译(部分)
socket支持三种address family:A single string is used for the AF_UNIX address family.A pair (host, port) is used for the AF_INET address family, where host is a string representing either a hostname in In
2015-04-05 15:33:57
3461
1
原创 软件
多媒体类Splayer射手影音下载链接简单小巧的视频播放器,最重要的是射手影音播放器可以自动匹配字幕。KMPlayer,PotPlayer功能非常强大的视频播放器,可配置性极强。网易云音乐音乐播放器,界面很不错,可同步豆瓣,虾米等主流音乐站点的歌单,提供2T的音乐网盘2345Pic 2345看图王图片浏览器,功能不多,常用的有图片剪切,转换大小,转换格式,涂鸦。操作简单提升效率Cloverc
2015-04-03 16:05:04
486
原创 [pyhton]桶排序
#coding:utf-8#bucketSortdef bucketSort(L,length): buckets = [[] for i in range(10)] for i in range(length): for item in L: num = item / (10 ** i) % 10 (buckets[
2015-04-02 23:18:08
398
原创 [python]归并排序
# coding:utf8####归并排序def merge(l, i, m, j): k1 = i k2 = m + 1 tmp = [] while k1 <= m and k2 <= j: if l[k1] < l[k2]: tmp.append(l[k1]) k1 = k1 + 1
2015-04-01 19:47:28
427
原创 [python]插入排序和希尔排序
插入排序算法描述:插入排序是一种通过将记录插入到已排序好的记录当中的方法。假设要将第i个元素插入到前i-1个已排序好的元素中:首先设置一个变量keep_value保存L[i]的值依次将keep_value和Lj进行比较,如果L[k]>keep_value,那么执行L[k+1]=L[K];否则,停止比较,执行L[k+1]=keep_value。完成插入如果前面所有元素都大于keep_value,
2015-04-01 19:03:47
415
原创 [pyhton]选择排序
#选择排序def selectSort(L,key): Len = len(L) for i in range(Len-1,0,-1): large = key(L[0]) index = 0 for j in range(1,i+1): if key(L[j]) > large:
2015-03-31 21:05:43
458
原创 DNS
DNS–Domain Name System的缩写,中文称作域名系统。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。DNS 使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。因特网中有三种类型的DNS服务器:根DNS服务器:截至2014年10月,全球有504台根服务器,被编号为A到M共13个标号,大部分借由任播
2015-03-31 19:56:15
734
原创 SMTP、POP3、IMAP
SMTPSMTP是Simple Mail Transfer Protocol的缩写,称为简单邮件传输协议。SMTP主要用于用户代理与邮件服务器、邮件服务器与邮件服务器之间的邮件传输。例如,我想要发送一封电子邮件给同学A: 1. 我通过邮件代理(outlook,foxmail)将邮件发送给我的邮件服务器,假设为网易的smtp.163.com。 2. 我的邮件服务器接收到该邮件后,将邮件存放在我的邮
2015-03-31 18:38:42
684
原创 FTP协议简介
FTP协议和HTTP协议都是文件传输协议,两者之间有很多共同点。例如,它们都运行在TCP之上。然而,这两个运用层协议也有一些很重要的区别,。其中最显著的就是,FTP使用两个并行的TCP连接,一个叫做控制连接,另一个叫做数据连接。控制连接用于在两主机之间传输控制信息,诸如用户标识、口令、改变目录、put、get等命令。数据连接用于准确的传输一个文件。FTP命令和回答命令:USER username
2015-03-31 14:58:22
531
原创 HTTP协议--请求与响应报文格式
请求报文格式HTTP1.0版本只支持GET、POST、HEAD三种方法,后来发展到HTTP1.1,1.1版本额外支持PUT、DELETE方法。 HEAD方法类似于GET方法。当服务器接收到一个HEAD方法的请求时,会用一个HTTP报文进行响应。HEAD常用来进行故障跟踪。下面是火狐浏览器中用firebug抓取的请求报文: 响应报文格式 下面是火狐浏览器中用firebug抓取的响应报文:
2015-03-30 22:40:14
1261
原创 网段划分
A类 二进制表示,以0开头:0xxx xxxx.yyyy yyyy.yyyy yyyy.yyyy yyyy 十进制表示:0.0.0.0-127.255.255.255 0.x.x.x和127.x.x.x为保留网段 子网掩码:255.0.0.0 内网网段:10.x.x.x B类 二进制表示,以10开头:10xx xxxx.xxxx xxxx.yyyy yy
2015-03-29 20:54:40
2442
原创 因特网五层协议栈
协议栈 举例 应用层 应用层是网络应用程序及其应用层协议存留的地方 HTTP、FTP、SMTP、DNS 传输层 运输层提供了一个在应用程序的客户机和服务器之间传输应用层报文的服务。运输层分组(packet)称为报文段(segment) TCP、UDP 网络层 网络层负责将称为数据报的网络层分组从一台主机移动到另一台主机。在源主机中的运输层协议向网络层递交运输层
2015-03-29 19:57:53
1938
原创 [pyhton]二叉树排序
biTree.pyimport Queueclass biTreeNode(object): '''二叉树节点类,只有left,right,data属性''' def __init__(self,data=0): self.left = None self.right = None self.data = dataclass biTr
2015-03-28 19:46:12
498
原创 快速排序
快速排序的重点在于如何分区,首先从数组中选取一个基准值,然后把小于基准值的元素放到左边,大于基准值的元素放到右边。如下图所示 c实现#include <stdio.h>int partition(int L[],int lb,int ub){ int find,down,up,tmp; find = L[lb]; down = lb; up = ub;
2015-03-27 19:20:33
382
原创 [C]冒泡排序
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2015-03-27 17:39:36
423
原创 用二叉树表示树
在图A-1中,树的根节点是A,它有三个子节点:B、C、D;B有两个子节点E、F;D有一个子节点G。将树转换为二叉树表示,left指向第一个子节点,right指向自己的兄弟节点。因此,可将图A-1中的树转换为图A-2中的二叉树。 另外一个稍复杂的转换关系可看下图。
2015-03-26 22:51:42
476
原创 [c]二叉树
#include "Queue.c"struct Node{ int data; struct Node * father; struct Node * left; struct Node * right;};struct Node * getNode(data){ struct Node * node = malloc(sizeof(struct Node
2015-03-26 21:01:38
381
原创 [c]队列queue
#include <stdlib.h>#include <stdio.h>#include <string.h>struct Queue{ int head; int rear; int allocLength; int elemSize; void * elems;};void InitQueue(struct Queue *q,int len,in
2015-03-26 20:55:17
492
原创 [C]链表
#include <stdio.h>#include <stdlib.h>struct Node{ int data; struct Node * next;};//获取一个节点,返回节点地址struct Node * getNode(int data){ struct Node *node = malloc(sizeof(struct Node)); no
2015-03-26 20:51:21
490
原创 [python]Huffman Encoding哈夫曼编码
#Huffman Encoding#Tree-Node Typeclass Node: def __init__(self,freq): self.left = None self.right = None self.father = None self.freq = freq def isLeft(self):
2015-03-25 19:13:42
8154
2
原创 约瑟夫问题
##约瑟夫问题import randomdef josephProblem(L,N): #start = random.choice(range(len(L))) start = 2 print 'start:',L[start],L current = start count = 1 while len(L) > 1: print
2015-03-22 15:44:16
373
原创 [Python]中缀表达式转前缀表达式
#判断运算符的优先级def opOrder(op1,op2): order_dic = {'*':4,'$':5,'/':4,'+':3,'-':3} if op1 == '(' or op2 == '(': return False elif op2 == ')': return True else: if orde
2015-03-20 19:05:06
2639
原创 [python]汉诺塔问题求解
汉诺塔问题:将A塔上的5个圆盘移动到C塔上 可以用递归的思路来求解该问题,为了使问题一般化,假设要移动n个圆盘。根据递归的思路,可以考虑先把上面n-1个圆盘移动到B塔上,然后将最底下的n号圆盘移动到C塔,再将B塔上n-1个圆盘移动到C塔。 Python实现#towers of hanoi 汉诺塔问题def extList(L,length=5): if len(L) == length
2015-03-20 15:37:24
901
原创 欧几里德和stein两种算法求最大公约数
1.欧几里德原理:`gcd(x,y) = gcd(y,x%y)`2.stein原理:`gcd(k*x,k*y) = k*gcd(x,y)`Python实现#欧几里德辗转相除法求最大公约数def euclidGcd(x,y): assert x >= 0 and y >= 0 if y == 0: return x return euclidGcd(y,
2015-03-20 13:10:55
704
原创 [C]判断一个字符串是不是合格的表达式
#include <stdio.h>#include <ctype.h>#define FALSE 0#define TRUE 1char getSymbol(char *string,int length,int *pos);int isExpr(char * string,int length,int *pos);int isTerm(char *string,int length,
2015-03-20 10:57:44
656
原创 对分查找
对于一个排好序的数组,可以使用对分查找算法来查找元素。#include <stdio.h>int binarySearch(int a[],int low,int high,int key){ /*a-->待查找数组, low-->下边界, high-->上边界, key-->待查找元素*/ if(low > high){ retu
2015-03-19 19:18:19
553
原创 [C]堆栈,泛型
stack.htypedef struct{void * elems;int elemSize;int logicLen;int allocLen;}stack;stack.c#include <stdio.h>#include "stack.h"#include <assert.h>#include <stdlib.h>#include <string.h>void stack
2015-03-19 18:53:00
484
原创 [python]将中缀表达式(infix)转换为后缀表达式(postfix)
将中缀表达式(infix)转换为后缀表达式(postfix)算法描述第一种情况,表达式不含括号。假设存在一个函数prcd(op1,op2),其中op1和op2是两个操作符(在中缀表达式中,op1在op2的左边),如果op1的优先级高于或等于op2,函数返回True,否则返回False。例如:prcd('\*','+') --> Trueprcd('+','-') --> Trueprcd('\*'
2015-03-18 21:39:48
4046
转载 linux Bash介绍
4. Bash shell 的操作环境 4.1 路径与命令搜寻顺序 4.2 bash 的进站与欢迎信息: /etc/issue, /etc/motd 4.3 环境配置文件: login, non-login shell, /etc/profile, ~/.bash_profile, source, ~/.bashrc 4.4 终端机的
2014-11-09 11:47:53
661
转载 vim按键
按键说明除了上面简易范例的 i, [Esc], :wq 之外,其实 vim 还有非常多的按键可以使用喔!在介绍之前还是要再次强调, vim 的三种模式只有一般模式可以与编辑、指令列模式切换,编辑模式与指令列模式之间并不能切换的! 这点在图2.1里面有介绍到,注意去看看喔!底下就来谈谈 vim 软件中会用到的按键功能吧!第一部份:一般模式可用的按钮说明,光标移动、复制贴上
2014-11-08 11:43:41
340
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人