python list的快速排序

Posted by 昆山吴彦祖 on 2017.12.07
import random,math

#下面这个函数用于生产一个随机数组,非必要
def random_int_list(start, stop, length):
    start, stop = (int(start), int(stop)) if start <= stop else (int(stop), int(start))
    length = int(abs(length)) if length else 0
    random_list = []
    for i in range(length):
        random_list.append(random.randint(start, stop))
    return random_list

def fun(list,left,right):
    if right==left:
        return list

    old_left = left
    old_right = right
    a = list[left]

    while left < right:
        while list[right]<a:
            while list[left]>a:
                value = list[left]
                list[left] = list[right]
                list[right] = value
            left = left + 1

            if left == right:
                list[old_left] = list[left]
                list[left] = a
        right = right - 1

    fun(list,old_left,left)
    fun(list,right+1,old_right)

    return list

list = random_int_list(0,1000,10000)
print('old_list:%s'%list)
print('new_list:%s'%fun(list,0,len(list)-1))

快速排序 排序