快速排序

# -*- coding: gb2312 -*-

# 交换数值
def swap(arr, i, j):
    temp = arr[i]
    arr[i] = arr[j]
    arr[j] = temp

# 快速排序
def quickSort(arr, left, right):
    if left < right:
        key = arr[(left + right) / 2]
        i = left
        j = right
        
        while True:
            while True:
                if arr[i] >= key:
                    break
                i += 1
        
            while True:
                if arr[j] <= key:
                    break
                j -= 1
                
            if i >= j:
                break
            
            swap(arr, i, j)
            
        quickSort(arr, left, i - 1)
        quickSort(arr, j + 1, right)
    
if "__main__" == __name__:
    arr = [4, 2, 1, 3, 5]
    print "arr: ", arr
    quickSort(arr, 0, len(arr) -1)
    print "sort arr: ", arr
    

输出:

arr:  [4, 2, 1, 3, 5]
sort arr:  [1, 2, 3, 4, 5]

参考:
《快速排序算法-c#版》
[转]http://blog.csdn.net/mamihong/article/details/8313598#comments
 

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