【排序】快速排序

0x01 描述

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

0x02 python代码

#!/usr/bin/env python2
#-*- coding:utf-8 -*-
import random

def quickSort(lists, left, right):
    if left >= right:
        return lists
    key = lists[left]
    low = left
    high = right
    while left < right:
        while left < right and lists[right] >= key:
            right -= 1
        lists[left] = lists[right]
        while left < right and lists[left] <= key:
            left += 1
        lists[right] = lists[left]
    lists[right] = key
    quickSort(lists, low, left - 1)
    quickSort(lists, left + 1, high)
    return lists

if __name__ == '__main__':
    num_list = [random.randint(0, 1000) for i in range(10000)]
    num_list = quickSort(num_list, 0, len(num_list) - 1)
    print(num_list)

0x03 参考文献

http://python.jobbole.com/82270/

你可能感兴趣的:(【排序】快速排序)