#--coding: utf8 --
def qsort(arr, low, high):
# 只有low小于high的时候才有必要排序
if low < high:
# 确定基准位置
pivotpos = partition(arr, low, high)
# 快速排序基准位置左边的元素
qsort(arr, low, pivotpos - 1)
# 快速排序基准位置右边的元素
qsort(arr, pivotpos + 1, high)
def partition(arr, low, high):
"""确定基准位置,把比它小的移动到它的左边,
比它大的移到它的右边
"""
pivotpos = low
pivot = arr[low]
for index in range(low, high + 1):
item = arr[index]
# 当前的对象比基准对象小
if item < pivot:
# 基准位置 + 1
pivotpos += 1
if pivotpos != index:
# 有必要挪一下位置
swap(arr, pivotpos, index)
# 把选定的基准值移动到正确的位置
swap(arr, low, pivotpos)
return pivotpos
def swap(arr, index1, index2):
"""把arr中index1, index2的两个值交换位置
"""
tmp = arr[index1]
arr[index1] = arr[index2]
arr[index2] = tmp
arr = [10,7,3,5,8,3,9,4,19,5]
qsort(arr, 0, len(arr) - 1)
print arr
转载于:https://my.oschina.net/jamesxu/blog/15141