快排python

def quickSort(alist):
    quickSortHelper(alist,0,len(alist)-1)
    
def quickSortHelper(alist,first,last):
    if first < last:
       splitpoint = partition(alist,first,last) 
       quickSortHelper(alist,first,splitpoint-1)
       quickSortHelper(alist,splitpoint+1,last)

def partition(alist,first,last):
    pivotvalue = alist[first]
    
    leftmark = first+1
    rightmark = last
    done = False
    
    while not done:
        while leftmark <= rightmark and alist[leftmark] <= pivotvalue:
            leftmark = leftmark + 1
        while leftmark <= rightmark and alist[rightmark] >= pivotvalue:
            rightmark = rightmark - 1
        if leftmark > rightmark:
            done = True
        else:
            alist[leftmark],alist[rightmark] = alist[rightmark],alist[leftmark]
        
    alist[first],alist[rightmark] = alist[rightmark],alist[first]
        
    return rightmark

alist = [1,5,62,35,82,45,69,3,7]
quickSort(alist)
print(alist)

猜你喜欢

转载自blog.csdn.net/dl_007/article/details/83046110