快速排序Python实现
gist: https://gist.github.com/genesislive/5081031
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
__author__ = 'Genesislive'
def partition(list, start, end):
pivot = list[start]
bottom = start
top = end
while bottom < top:
# print '%d - %d' % (bottom, top)
while bottom < top and list[top] >= pivot:
top -= 1
list[bottom] = list[top]
while bottom < top and list[bottom] <= pivot:
bottom += 1
list[top] = list[bottom]
list[bottom] = pivot
return bottom
def quicksort(list, start, end):
if start < end:
split = partition(list, start, end)
quicksort(list, start, split - 1)
quicksort(list, split + 1, end)
def main():
import random
random.seed()
list = [random.randint(1, 100) for i in range(20)]
import string
print string.join(map(str, list)) # print list
quicksort(list, 0, len(list) - 1)
print string.join(map(str, list))
if __name__ == '__main__':
main()


被折叠的 条评论
为什么被折叠?



