📌  相关文章
📜  国际空间研究组织 | ISRO CS 2013 |问题 38(1)

📅  最后修改于: 2023-12-03 15:37:14.900000             🧑  作者: Mango

国际空间研究组织 | ISRO CS 2013 |问题 38

问题描述

一个输入无序数组,找出最大的三个数。

输入

一个无序数组。

输出

最大的三个数。

解题思路

可以使用选择排序进行排序,或者使用快速排序进行排序,然后取最大的三个数即可。

这里给出使用选择排序的示例代码:

def find_largest_three(arr):
    for i in range(len(arr)):
        max_idx = i
        for j in range(i+1, len(arr)):
            if arr[max_idx] < arr[j]:
                max_idx = j

        arr[i], arr[max_idx] = arr[max_idx], arr[i]

    return arr[:3]
测试样例
assert find_largest_three([3, 5, 1, 7, 9, 2, 8]) == [9, 8, 7]
assert find_largest_three([1, 2, 3]) == [3, 2, 1]
assert find_largest_three([1, 2]) == [2, 1]
时间复杂度

选择排序算法的时间复杂度为 $O(n^2)$,取最大的三个数的时间复杂度为 $O(1)$,总时间复杂度为 $O(n^2)$。