编程题

一个列表中存在 n 个数据, 可以用分治算法来找到其中的最小值。 具体过程如下: 如果列表元素的个数小于等于 2 的时候, 经过一个判断就找到其中的最小值, 所以可以先把数据从中间划分为左右两部分, 然后通过递归把每一部分再划分为左右两部分, 直到数据规模小于等于 2 的时候, 返回结果, 然后通过递归到最后为两个数据对比, 我们就可以找到最小值。请根据以上算法过程, 补全代码。

# 求列表中小于两个元素的最小值

def get_min(number):

        if len(number) == 1:

                return ____①____

        else:

                if number[1] > number[0]:

                        return number[0]

                else:

                        return number[1]

def solve(number):

        n = len(number)

        if n <= 2:

                return get_min(number)

        else:

                # 将整个列表分为左右两部分

                left_list, right_list = ____②____ , number[n//2:]

                # 递归(树), 分治

                left_min, right_min = solve(left_list), ____③____

                return get_min([left_min, right_min])

test_list = [5, 11, 3, 2, 7, 9]

print(solve(test_list))

查看答案
赣ICP备20007335号-2