基本排序——快速排序(Python语言描述)

一、快速排序原理

按从小到大快速排序:在数组中随机选一个数(通常为第一个),数组中小于等于此数的放在它左边,大于此数的放在右边,这样将数组一分为二。再对两边数组递归调用快速排序,直到都有序为止。

#!usr/bin/python3

def quickSort(arrlist):
    length = len(arrlist)
    _quickSort(arrlist, 0, length-1)
    
    
def _quickSort(arrlist, low, high):
    if low < high:
        pivote = part(arrlist, low, high)
        _quickSort(arrlist, low, pivote -1)
        _quickSort(arrlist, pivote+1, high)
    
    
def part(arrlist, low, high):
    pivoteValue = arrlist[low]
    
    while low < high:
        while low < high and pivoteValue <= arrlist[high] :
            high-=1
        
        arrlist[low] = arrlist[high]
        
        while low < high and pivoteValue >= arrlist[low]:
            low+=1
            
        arrlist[high] = arrlist[low]
        
    pivote = low;
    arrlist[pivote] = pivoteValue
        
    return pivote

if __name__ == "__main__":
    arr=[2, 12, 3, 45, 65, 78, 54, 88, 99]
    quickSort(arr)
    print(arr)

最后附上一片比较好的博文:

https://blog.csdn.net/yushiyi6453/article/details/76407640

你可能感兴趣的:(algorithm,Python)