For educational purpose, the built-in sort() should be faster. {{{ >>> def qs(l): ... if len(l) <= 1: return l ... return qs( [x for x in l[1:] if x < l[0]] ) + l[:1] + qs( [x for x in l[1:] if x >= l[0] ] ) >>> l = [random.randint(-100,100) for x in range(10)] >>> qs(l) [-73, -59, -27, -17, -12, 16, 22, 40, 53, 83] >>> l.sort() >>> l [-73, -59, -27, -17, -12, 16, 22, 40, 53, 83] }}} One line quick sort (Python 2.5 only) {{{ qs = lambda l : l if len(l) <= 0 else qs([x for x in l[1:] if x < l[0]]) + l[:1] + qs([x for x in l[1:] if x >= l[0]] }}} ---- CategoryCookbook