MST
星途 面试题库

面试题:Visual Basic 中的数组操作与代码优化

在 Visual Basic 中,给定一个整数数组,要求编写一个函数,找出数组中的第二大的数,并对代码进行优化,说明优化思路。例如数组为 {1, 5, 3, 7, 4},函数应返回5。
42.2万 热度难度
编程语言Visual Basic

知识考点

AI 面试

面试题答案

一键面试
Function FindSecondLargest(arr() As Integer) As Integer
    Dim largest As Integer
    Dim secondLargest As Integer
    Dim i As Integer
    
   '假设第一个元素是最大和第二大的初始值
    largest = arr(0)
    secondLargest = arr(0)
    
    For i = 1 To UBound(arr)
        If arr(i) > largest Then
            secondLargest = largest
            largest = arr(i)
        ElseIf arr(i) > secondLargest And arr(i) < largest Then
            secondLargest = arr(i)
        End If
    Next i
    
    FindSecondLargest = secondLargest
End Function

优化思路

  1. 初始化:直接将数组的第一个元素设为最大和第二大的初始值,这样可以减少不必要的比较。因为数组不为空时,第一个元素必然是数组中的一个值,以此为基础开始比较更高效。
  2. 单次遍历:通过一次遍历数组,在遍历过程中实时更新最大和第二大的值。当遇到比当前最大元素更大的元素时,更新最大元素,并将原来的最大元素赋值给第二大元素;当遇到介于最大和第二大元素之间的值时,更新第二大元素。这种方式避免了多次遍历数组,降低了时间复杂度。时间复杂度为O(n),n为数组元素个数,相比于排序后取第二大元素(时间复杂度通常为O(n log n))更为高效。