首页 > 解决方案 > 如何通过查看比较运算符对列表进行排名?

问题描述

我试图通过查看 B 列表中的比较运算符来比较 A 列表,并且我试图将 A 列表放入您的 C 列表中。列表 A 和 B 可以是从 1 到 n。例如;

A = [1,2,33,8,3]
B = ["<",">","<","<"]

输出;

C=[1,33,2,3,8]

我可以为此安装什么算法?

标签: pythonalgorithmsorting

解决方案


第一排序A。标识此排序列表中第一个和最后一个值的索引。

然后从列表 B 中迭代比较器。当它是 时<,取 A 的低端的值,并增加相应的索引。为 时>,从另一端取值,并递减对应的索引。

这是 Python 中的一个实现:

def rankbycomparators(A, B):
    result = []
    A = sorted(A)
    lo = 0
    hi = len(A)-1
    for cmp in B:
        if cmp == "<":
            result.append(A[lo])
            lo += 1
        else:
            result.append(A[hi])
            hi -= 1
    result.append(A[lo])
    return result

使用示例:

A = [1,3,4,6,8]
B = ["<",">","<","<"]
print(rankbycomparators(A, B)) 

哪个输出[1, 8, 3, 4, 6]


推荐阅读