【LeetCode】快速排序(python版)
发布日期:2021-05-08 05:47:51 浏览次数:20 分类:精选文章

本文共 1596 字,大约阅读时间需要 5 分钟。

快速排序:

以列表中的任意一个数为基准(一般选取第一个数),将列表分为左右(前后)两个子列表,左边子列表的数要比基数小,右边的子列表要比基数大,然后继续把左边子列表和右边子列表按同样的方法继续分解、比较,一直分到分无可分位置,然后按照左边子列表比基数小+基数+右边子列表(比基数大)的方式连接起来,最后得到一个有序的数列

import randomimport timeitdef randomList(n):    iList = []    for i in range(n):        iList.append(random.randrange(0,1000))    return iListdef bubblesort(iList):    if (len(iList)<=1):        return iList    for i in range(1,len(iList)):        for j in range(0,len(iList)-i):            if(iList[j]>iList[j+1]):                iList[j],iList[j+1] = iList[j+1],iList[j]    return iListdef selectsort(iList):    if(len(iList)<=1):        return iList    for i in range(0,len(iList)-1):        if iList[i] != min(iList[i:]):            minIndex = iList.index(min(iList[i:]))            iList[i],iList[minIndex] = iList[minIndex],iList[i]    return iListdef insetionsort(iList):    if(len(iList)<=1):        return iList    for right in range(1,len(iList)):        target = iList[right]        for left in range(0,right):            if target<=iList[left]:                iList[left+1:right+1] = iList[left:right]                iList[left] = target;                break    return iListdef quicksort(iList):    if(len(iList)<=1):        return iList    left = []    right = []    for i in iList[1:]:        if i<=iList[0]:            left.append(i)        else :            right.append(i)     return quicksort(left)+[iList[0]]+quicksort(right)if __name__ == "__main__":    iList = randomList(20)    print(iList)    print(quicksort(iList))    #print(timeit.timeit("selectsort(iList)","from _main_ import selectsort,iList",number=100))
上一篇:【LeetCode】计数排序(python版)
下一篇:【LeetCode】插入排序(python版)

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月15日 06时32分37秒