Skip to content

Latest commit

 

History

History
39 lines (32 loc) · 1.33 KB

快速排序.md

File metadata and controls

39 lines (32 loc) · 1.33 KB

算法流程

  • 选取一个数字作为基准,可选取区间内任意一个
  • 将数列第一位开始,依次与此数字比较,如果小于此数,将小数交换到左边,最后达到小于基准数的在左边,大于基准数的在右边,分为两个数组
  • 分别对两个数组重复上述步骤

代码

def QuickSort(myList,start,end):
    #判断start是否小于end,如果为false,直接返回
    if not start < end:
        return myList

    i,j = start,end
    #设置基准数
    base = myList[i]

    while i < j:
        #如果列表后边的数,比基准数大或相等,则前移一位直到有比基准数小的数出现
        while (i < j) and (myList[j] >= base):
            j = j - 1

        #如找到,则把第j个元素赋值给第个元素i,此时表中i,j个元素相等
        myList[i] = myList[j]

        #同样的方式比较前半区
        while (i < j) and (myList[i] <= base):
            i = i + 1
        myList[j] = myList[i]
    #做完第一轮比较之后,列表被分成了两个半区,并且i=j,需要将这个数设置回base
    myList[i] = base

    #递归前后半区
    QuickSort(myList, start, i - 1)
    QuickSort(myList, j + 1, end)
    return myList

扯淡

绝大多数情况下排序只需要直接sort。。。仅用于真的被考快排实现时用