计数排序之python 实现源码

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)。

时间: 2024-08-08 15:45:53

计数排序之python 实现源码的相关文章

桶排序之python实现源码

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解释器源码剖析》第17章--python的内存管理与垃圾回收

17.0 序 内存管理,对于python这样的动态语言是至关重要的一部分,它在很大程度上决定了python的执行效率,因为在python的运行中会创建和销毁大量的对象,这些都设计内存的管理.同理python还提供了了内存的垃圾回收(GC,garbage collection),将开发者从繁琐的手动维护内存的工作中解放出来.这一章我们就来分析python的GC是如何实现的. 17.1 内存管理架构 在python中内存管理机制是分层次的,我们可以看成有四层,0 1 2 3.在最底层,也就是第0层是

一个python游戏源码

#finalPyPong.py import pygame,sys class MyBallClass(pygame.sprite.Sprite): def __init__(self,image_file,speed,location=[0,0]): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load(image_file) self.rect = self.image.get_rect() self.rect.

【转】linux环境下python的源码安装

[转载: http://www.cnblogs.com/yuechaotian/archive/2013/06/03/3115482.html] [问题] 在编译Sequoiadb的Python驱动源码的过程中,出现:Python.h不存在的问题.经求证,Python.h文件只在python的源码安装中存在,而在一般的二进制安装中则不存在. 1. 下载python2.7.5,保存到 /data/qtongmon/software wget https://www.python.org/ftp/p

《python解释器源码剖析》第13章--python虚拟机中的类机制

13.0 序 这一章我们就来看看python中类是怎么实现的,我们知道C不是一个面向对象语言,而python却是一个面向对象的语言,那么在python的底层,是如何使用C来支持python实现面向对象的功能呢?带着这些疑问,我们下面开始剖析python中类的实现机制.另外,在python2中存在着经典类(classic class)和新式类(new style class),但是到Python3中,经典类已经消失了.并且python2官网都快不维护了,因此我们这一章只会介绍新式类. 13.1 p

《python解释器源码剖析》第4章--python中的list对象

4.0 序 python中的list对象,底层对应的则是PyListObject.如果你熟悉C++,那么会很容易和C++中的list联系起来.但实际上,这个C++中的list大相径庭,反而和STL中的vector比较类似 4.1 PyListObject对象 我们知道python里面的list对象是支持对元素进行增删改查等操作的,list对象里面存储的,底层无一例外都是PyObject * 指针.所以实际上我们可以这样看待python底层的PyListObject:vector<PyObject

《python解释器源码剖析》第16章--python的多线程机制

16.0 序 在介绍多线程之前,我们要先知道线程是什么,线程是操作系统调度cpu工作的最小单元,同理进程则是操作系统资源分配的最小单元,线程是需要依赖于进程的,并且每一个进程只少有一个线程,这个线程我们称之为主线程.而主线程则可以创建子线程,一个进程中有多个线程去工作,我们就称之为多线程.关于线程,请记住两句话,这两句话我们在前面章节中也已经提过了. python中的一个线程,对应c语言中的一个线程,然后对应操作系统的一个线程,操作系统的线程我们一般称之为原生线程,这三者是一一对应的. pyth

python slots源码分析

上次总结Python3的字典实现后的某一天,突然开窍Python的__slots__的实现应该也是类似,于是翻了翻CPython的源码,果然如此! 关于在自定义类里面添加__slots__的效果,网上已经有很多资料了,其中优点大致有: (1)更省内存. (2)访问属性更高效. 而本文讲的是,为什么更省内存?为什么更高效?当然为了弄明白这些,深入到CPython的源码是必不可少的.不过,心里有个猜想之后再去看源码效果或许更好,这样目的性更强,清楚自己需要关注的是什么以免在其中迷失! 我先稍微解释一

windows上编译 python C源码

跟随<python源码剖析>一书,了解python内部机制.今天搞定了在windows上编译python源代码. 按照书中的内容,使用VS2008编译Python2.7.9.相似的步骤见下面的链接: http://www.cnblogs.com/heshizhu/archive/2012/08/09/2630346.html 我使用的是VS2008ProEdition90天的试用版,中间遇到一些问题记录一下: 无法打开文件python27.lib 原因及解决方案:系统是win8 64位,没有安