1.简单算法python实现:快速排序

python3.5  

最优时间复杂度:nlog(n)

最坏时间复杂度:n²

稳定性:不稳定

1.快速排序思想:

选取第一个元素作为mid.设定两个指针,low 和 high.

low指向第一个元素,high指向最后一个元素.

low第一个指向的作为mid,high判别指向元素是否大于mid,若小于,指向元素的值赋给low,low指针再向右移动,同理.最后直到重叠,将mid值赋予此位置.

左右两边便以分成大于mid和小于mid两部分,再对两部分作同样的操作.

直到low与high重叠.停止递归

完成排序

 

2.python代码实现

def quick_sort(alist,first,last):
    '''快速排序'''
    if first >= last:
        return
    mid_value = alist[first]
    low = first
    high = last
    while low < high :
        # high左移
        while low < high and alist[high]>= mid_value:
            high-=1
        alist[low] = alist[high]
        while high > low and alist[low]<mid_value:
            low+=1
        alist[high] = alist[high]
    alist[low]=mid_value
    quick_sort(alist,first,low-1)
    quick_sort(alist,low+1,last)

if __name__=='__main__':
    li = [54,26,93,17,77,31,44,55,20]
    print(li)
    quick_sort(li,0,len(li)-1)
    print(li)

 

上一篇:python exercise function之高阶函数map/reduce


下一篇:python 学习