高阶函数实现-sort

1.实现排序的方式一

def mysort(iter):
    ret = []
    for x in iter:
        for k,v in enumerate(ret):
            if x > v:#通过这个来判断升序降序
                ret.insert(k,x)
                break
        else:
            ret.append(x)
    return ret

print(mysort([1, 2, 45, 6, 7, 8]))

2.通过引入reverse参数来比较

def mysort(iter,reverse=False):
    ret = []
    for x in iter:
        for k,v in enumerate(ret):
            if reverse:
                flag = x > v
            else:
                flag = x < v
            if flag:
                ret.insert(k,x)
                break
        else:
            ret.append(x)
    print(ret)
    return ret

mysort([1,2,4,3,6,9,8])

 可以简化一下:

def mysort(iter, reverse=True):
    ret = []
    for x in iter:
        for k, v in enumerate(ret):
            flag = x > v if reverse else x < v
            if flag:
                ret.insert(k, x)
                break
        else:
            ret.append(x)
    print(ret)
    return ret

mysort([1, 2, 4, 3, 6, 9, 8])

3.方式三,引入参数lambda函数

def mysort(iter, key=lambda x,y:x>y):
    ret = []
    for x in iter:
        for k,v in enumerate(ret):
            if key(x,v):
                ret.insert(k,x)
                break
        else:
            ret.append(x)
    print(ret)
    return ret
mysort([1,4,6,8,3,5])

改进版:

def mysort(iter, reverse=False, key=lambda x, y: x < y):
    ret = []
    for x in iter:
        for k,v in enumerate(ret):
            flag = key(x,v)
            if flag:
                ret.insert(k,x)
                break
        else:
            ret.append(x)
    print(ret)
    return ret


mysort([1, 4, 6, 8, 3, 5])

 

posted @ 2022-04-30 20:13  千焱  阅读(27)  评论(0编辑  收藏  举报