1. 程式人生 > >隨機快排

隨機快排

import random
def quicksort(arr, L, R):
    if(L < R):
        swap(arr,L + int(random.random()*(R-L+1)), R)
        low,high=partition(arr, L, R)
        quicksort(arr, L ,low)
        quicksort(arr, high, R)
def partition(arr, L, R):
        less = L -1
        more = R
        while(L <
more): if arr[L] < arr[R]: less += 1 swap(arr, L,less) L += 1 elif arr[L] > arr[R]: more -= 1 swap(arr, L, more) else: L+=1 swap(arr, more, R) return
less,more+1 def swap(arr, i, j): arr[i],arr[j]=arr[j],arr[i] lst = [22,312,22,5,23,7,22] quicksort(lst,0,6) print(lst)