我写了下面的插入排序算法

def insertionSort(L, reverse=False):
    for j in xrange(1,len(L)):
        valToInsert = L[j]
        i=j-1
        while i>=0 and L[i] > valToInsert:
            L[i+1] = L[i]
            i-=1
        L[i+1] = valToInsert
    return L

编辑:您所要做的就是将最终的>更改为
但是,大多数人在这种情况下会做什么?在两个if语句中写两次算法,一个在>处,另一个在
我知道这个问题有点主观。

最佳答案

您可以为小于运算符使用变量:

import operator
def insertionSort(L, reverse=False):
    lt = operator.gt if reverse else operator.lt
    for j in xrange(1,len(L)):
        valToInsert = L[j]
        i = j-1
        while 0 <= i and lt(valToInsert, L[i]):
            L[i+1] = L[i]
            i -= 1
        L[i+1] = valToInsert
    return L

关于python - 将反向特征添加到插入排序的典型方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15509639/

10-12 23:54