我的代码有效,但是如何使代码在确定的时间内运行?

时间:2018-11-14 16:11:35

标签: python algorithm performance

问题: 给定3个输入“弹跳”,“落球高度”和“球视图高度”。

我该如何计算观察者可以看到球传球的次数。 因此,我的代码给出了正确的输出,但是随着反弹接近1,我需要花费更长的时间。如何在本质上确定性。

Private Shared Sub dgvRowFormatting(dgv As DataGridView)
    For Each row As DataGridViewRow In dgv.Rows
        Dim CompareValue = Convert.ToInt32(dgv(1, row.Index).Value)
        row.DefaultCellStyle.ForeColor = MyConditions.SetCondition(CompareValue)
    Next
End Sub

Public Class MyConditions
    Public Enum Condition
        LessThanZero = -1
        EqualToZero
        GreaterThanZero
    End Enum

    Public Shared Function SetCondition(Of T As IComparable)(ByVal Value As T) As Color
        Return SetColorOnCondition(CType(Value.CompareTo(0), Condition))
    End Function

    Private Shared Function SetColorOnCondition(Comparison As Condition) As Color
        Select Case Comparison
            Case Condition.LessThanZero
                Return Color.Red
            Case Condition.EqualToZero
                Return Color.Black
            Case Condition.GreaterThanZero
                Return Color.Green
        End Select
    End Function
End Class

我不是在寻找代码答案,而只是在寻找需要思考的方向。 目前,我认为,如果我能以某种方式建立线性关系并创建一个“猜测”通过的函数,它将更快。

1 个答案:

答案 0 :(得分:0)

不确定多少是正确的。但是,

var heightDiff = (BallDropHeight - ViewerHeight); var reducedHeight = BallDropHeight *(1 - BounceFactor); var BallSeenTimes = ((heightDiff/reducedLength)*2)+1;

实际上可以解决它。您只需要找到每次跳下时降低的高度即可。然后,将查看器与落球点之间的高度差除以减少的高度,将得出球在查看器上方反弹的次数。此后,对于每个跳出观看者,乘以2便会看到两次。而添加一个是第一次下降。

不涉及循环。因此,执行所需的时间只会很小。希望它会有所帮助。