old = [2, 5, 3, 0, 2, 3, 0, 3] new = [0, 0, 0, 0, 0, 0] for i in range(len(old)): new[old[i]] = new[old[i]] + 1 for i in range(len(new)): for j in range(new[i]): print i 计数排序假设被排序的内容是整数,并且在一个比较小的范围内. 计数排序的时间复杂度 O(N).…
tmp = [] def bucket_sort(old): for i in range(len(old)): tmp.append([]) for i in old: tmp[int( i * len(old) )].append(i) for i in range(len(old)): #tmp[i].sort() insert_sort(tmp[i]) for i in range(len(old)): if(len(tmp[i]) > 0): print tmp[i] #test ca…
python:让源码更安全之将py编译成so 应用场景 Python是一种面向对象的解释型计算机程序设计语言,具有丰富和强大的库,使用其开发产品快速高效. python的解释特性是将py编译为独有的二进制编码pyc文件,然后对pyc中的指令进行解释执行,但是pyc的反编译却非常简单,可直接反编译为源码,当需要将产品发布到外部环境的时候,源码的保护尤为重要. 准备工作 环境是可为linux/centos,我Windows10本地是Bash on Ubuntu on Windows,用起来很方便,命…
1.对象的引用计数 从c代码分析可知,python所有对象的内存有着同样的起始结构:引用计数+类型信息,实际上这些信息在python本体重也是可以透过包来一窥一二的, from ctypes import * class PyObject(Structure): _fields_ = [("refcnt", c_size_t), ("typeid", c_void_p)] a = "this is a string" # 通过id(a)可以获得对…