摘要: 一 初识堆堆 数据结构是一种数组,它可以视为一颗完全二叉树。如下图: 图中的树是数组,A={16, 14, 10, 8, 7, 9, 3, 7},圈内表示数值,圈外红色的数字表示数组的下标。array_size是数组的大小(此时是8),heap_size是构建堆的元素的多少。满足heap_size... 阅读全文
posted @ 2013-02-22 22:43 jihite 阅读(3568) 评论(5) 推荐(3) 编辑
摘要: 递归算法是把一个问题分解成和自身相似的子问题,然后再调用自身把相应的子问题解决掉。这些算法用到了分治思想。其基本模式如下: 分解:把一个问题分解成与原问题相似的子问题 解决:递归的解各个子问题 合并:合并子问题的结果得到了原问题的解。 现在就用递归算法,采用上面的分治思想来解合并排序。 合并排序(非 阅读全文
posted @ 2013-02-21 08:14 jihite 阅读(18780) 评论(8) 推荐(0) 编辑
摘要: 假设字典为dics = {0:'a', 1:'b', 'c':3} 1.从字典中取值,当键不存在时不想处理异常 [方法] dics.get('key', 'not found') [例如] [解释] 当键'key'不存在是,打印'not found'(即想要处理的信息),当存在是输出键值。 【其他解 阅读全文
posted @ 2013-01-24 18:01 jihite 阅读(74567) 评论(0) 推荐(0) 编辑
摘要: 【任务】有一个包含列表(行)的列表,现在想获得另一个列表,该列表包含相同的行,但是一些列被删除和重新排序了。【解决方案】假设我们的列表是 listeg = [[0,1,2], [3,4,5], [6,7,8]],现在我们想去除第2列,同时把第1列和第3列互换。方法一: 格式:[[ ] for row in listeg],在内部[ ]写上自己想要的列,本要求中为[row[2], row[0]]方法二: 格式:[[ ] for row in listeg] ,在内部[ ]写上自己想要的列,但是内层的列也采用了和外层相同的格式,即[row[i] for i in [2, 0]]点评:方法一直接采. 阅读全文
posted @ 2013-01-24 11:30 jihite 阅读(5288) 评论(0) 推荐(0) 编辑
摘要: 小例奉上: 可以看出,赋值号“=”是引用,即a 和 b 是指向一个对象。 如何实现对象的拷贝呢,python 有 copy模块。用法:import copy 对象2 = copy.copy(对象1)例子: 问题: 可以看出:copy 可以实现浅层拷贝,可以通过copy.deepcoppy()来实现深层拷贝。例如上例: 判断是否是一个对象: is "b = a"是引用 指向的一个对象,所以a is b返回 True "c = copy.copy(a)"c是a的拷贝,不是指向一个对象,返回False判断是否值相同: == 阅读全文
posted @ 2013-01-20 17:10 jihite 阅读(3766) 评论(0) 推荐(1) 编辑
摘要: 作为一个计算机工程人员,编程最基础的工作,犹如厨师会做饭、建筑工人会垒砖。但算法重在思想,没有精美的菜谱不会有美味的菜肴、没有设计师的图纸盖不起绝世的建筑。 时间是宝贵的,但又是冗余的。往事越千年,弹指一挥间,从人类历史长河的角度来审视我们的人生,短短几十年,何其宝贵。但是再看看现实中的我们,有多少人在毫无价值的事情浪费了多少精力。时间是宝贵的,人生只能活一回。为了更好地生活、为了爱我的人和我爱的人、为了不虚度此生,好好珍惜时光,干点正事。 阅读全文
posted @ 2013-01-11 17:16 jihite 阅读(624) 评论(2) 推荐(1) 编辑
摘要: 看一段主函数调用函数的小程序: 1 import sys 2 def Fuc(): 3 print 'hello' 4 5 if __name__ == '__main__': 6 if len(sys.argv) != 3: 7 print 'Usage: python input_name output_name' 8 exit(1) 9 f_input = sys.argv[1]10 f_output = sys.argv[2]11 Fuc()12 释义: 5行“if __name__ == '_... 阅读全文
posted @ 2013-01-06 16:56 jihite 阅读(37280) 评论(0) 推荐(0) 编辑
摘要: 目标:全局变量先看程序:count = 0def Fuc(count): print count count += 1for i in range(0, 10): Fuc(count)结果是:不是我们想要的结果。解决之道一——全局变量:global aa = 3def Fuc(): global a print a a = a + 1if __name__ == "__main__": global a for i in range(10): Fuc()print 'hello' print a结果: 注意要领: 哪里需... 阅读全文
posted @ 2013-01-05 20:09 jihite 阅读(108103) 评论(0) 推荐(2) 编辑
摘要: 先列几个range()函数的几个用法: 函数原型:range(start, end, scan):参数含义:start:计数从start开始。默认是从0开始。例如range(5)等价于range(0, 5); end:技术到end结束,但不包括end.例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5 scan:每次跳跃的间距,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)坑人的现象:for i in range(5): print i i += 2 print i print '一轮结束'... 阅读全文
posted @ 2013-01-05 11:49 jihite 阅读(68220) 评论(5) 推荐(3) 编辑
摘要: 在c语言中,表示个“整型3行4列”的矩阵,可以这样声明:int a[3][4];在python中一不能声明变量int,二不能列出维数。可以利用列表中夹带列表形式表示。例如:表示矩阵 ,可以这样:count = 1a = []for i in range(0, 3): tmp = [] for j in range(0, 3): tmp.append(count) count += 1 a.append(tmp)print a结果:[[1, 2, 3], [4, 5, 6], [7, 8, 9]]但是注意一点:初始化(赋值全部为0时),下面是错... 阅读全文
posted @ 2013-01-05 11:28 jihite 阅读(42639) 评论(0) 推荐(1) 编辑