python 快速排序

快速排序:快速排序算法 时间复杂度为(Nlogn),最坏时间复杂度n的平方
直接看代码

#li是列表,fist,end是前后指针,在列表的第一个元素下标和最后一个元素下标
def quick_sort(li, fist, end):
    #如何前后指针相等时要推出循环
    if fist >= end:
        return
    #第一个元素最为基数
    jishu = li[fist]
    left = fist
    right = end
    #前元素如何下标如果小于后元素下标,一直循环
    while left < right:
        #判断这个右边元素是否大于基数,如何大于则移动下标,否则交换前后下标元素
        while li[right] >= jishu and left < right:
            right -= 1
        else:
            li[left] = li[right]
        #道理同上
        while li[left] < jishu and left < right:
            left += 1
        else:
            li[right] = li[left]
    #找到基数应该在的位置
    li[left] = jishu
    #将列表根据基数所在位置分成两个子列表,继续循环
    quick_sort(li, fist, left - 1)
    quick_sort(li, left + 1, len(li) - 1)

你可能感兴趣的:(pythom,快速排序,python)