代码之家  ›  专栏  ›  技术社区  ›  Alex Gordon

你有四个数字,你怎么知道哪个最大?

  •  -1
  • Alex Gordon  · 技术社区  · 16 年前

    有没有一个非常简单的算法来找出4个数字中哪个最大?

    12 回复  |  直到 13 年前
        1
  •  13
  •   JP Alioto    16 年前
      var lst = new List<int>() { 1, 7, 3, 4 };
      var max = lst.Max();
    

        2
  •  12
  •   Nate CSS Guy    16 年前

    如果它们在数组中,那么这样的东西应该可以工作:

    Dim ar As Integer() = {3, 6, 9, 12}
    Dim largest As Integer = ar(0)
    For i As Integer = 1 To ar.Length - 1
        If ar(i) > largest Then
            largest = ar(i)
        End If
    Next
    

    C

    int[] ar = {3, 6, 9, 12};
    int largest = ar[0];
    for(int i = 1; i < ar.Length; i++) {
        if(ar[i] > largest) {
            largest = ar[i];
        }
    }
    
        3
  •  4
  •   Jeremy Kauffman    13 年前

    如果你使用的语言支持某种最大函数或数组排序,一定要使用这些功能。或者选择此线程中任何其他理智的答案。然而,只是为了好玩:

    maximum = (var1 > var2 ? var1 : var2) > (var3 > var 4 ? var3 : var 4) ? 
                 (var1 > var2 ? var1 : var2) : 
                 (var3 > var 4 ? var3 : var 4);
    
        4
  •  3
  •   TheTXI    16 年前

    如果你需要编写自己的排序算法,最简单的实现方法可能是 bubble sort .

        5
  •  3
  •   JaredPar    16 年前

    使用VB.Net,您可以执行以下操作,它适用于任意数量的数字

    Public Function Max(ParamArray items As Integer()) As Integer
      if items.Length = 0 Then
        throw New ArgumentException("need at least 1 number")
      End IF
      return items.Max()
    End Function
    

    那么你现在可以做了

    Max(1,2,3,4)
    
        6
  •  2
  •   Fernando Martin    16 年前

    一个非常天真的方法是:

    #Pseudocode
    If number1 > number2 and number1 > number3 and number1 > number4: return number1
    Else if number2 > number3 and number2 > number4: return number2
    Else if number3 > number4: return number3
    Else: return number4
    

    使用数组更实用,但如果你开始使用数组,可能会比使用块更复杂。

        7
  •  2
  •   ChrisF    16 年前

    int max = int.MinValue;   // i.e. the "largest" negative number
    int largest = -1;
    for (int index = 0; index < array.Length; index++)
    {
        if (array[index] > max)
        {
            max = array[index];
            largest = index;
        }
    }
    

    最大的价值将是 max largest .

    int max = array[0];
    int largest = 0;
    for (int index = 0; index < array.Length; index++)
    
        8
  •  1
  •   Stephan    13 年前
    • 最大=A;
    • 最大=B;
    • 如果C>当时最大
    • 如果D>;当时最大
    • 最大=D;
    • 打印最大
        9
  •  0
  •   matt-jay matt-jay    16 年前

    在Java中,如果a是int[4]:

    Math.max(Math.max,a[0],a[1])

        10
  •  0
  •   Andrew Morton    3 年前
    Dim MyValues As New List(Of Double)
    Dim MaxValue As Double
    Dim tValue As Double
    
    MyValues.Add(12.58)
    MyValues.Add(3.58)
    MyValues.Add(518.6)
    MyValues.Add(244)
    MyValues.Add(31.25)
    
    For Each tValue In MyValues
        If MaxValue < tValue Then
            MaxValue = tValue
    
        End If
    Next
    
    MsgBox(MaxValue)
    
        11
  •  -1
  •   pipTheGeek    16 年前



    或者数学。马克斯以一种令人讨厌的嵌套方式,所以数学。Max(数字1,Math.Max(数字2,Math.Mox(数字3,数字4))
    如果可能有数百个数字,那么我会尝试选择一个更好的算法。可能是@ChrisF建议的,尽管这取决于数字的来源,例如数据库可以更容易地找到最大值,或者如果数字是从某个地方按顺序读取的,那么你可以在读取数字时存储最大值。

        12
  •  -1
  •   iver saladaga anoos    10 年前

    这是我自己的分析。我制作了这个代码来显示文本框中4个输入数字中的最低和最高数字,。它将显示指定标签的最低和最高值。如果u输入了两个相同的最低或最高数字,msgbox会以某种方式通知u输入了相同的最高或最低数字,并显示回其相应的标签。我用标签来显示最低和最高。这是我的fb:伊弗·萨拉达加·阿诺斯,菲律宾南部赞博南加JHCSC坦布利格分校的二年级学生。。

    Private Sub Command1_Click()
    Dim A, B, C, D As Long
    
    
    A = Text1.Text
    B = Text2.Text
    C = Text3.Text
    D = Text4.Text
    
    If A < B And A < C And A < D Then
    Label9.Caption = A
    Else
    If A > B And A > C And A > D Then
    Label10.Caption = A
    End If
    

    标签9.标题=A 如果A>B和A>D和A>C然后 语句结束 语句结束

    如果A<C和A<B和A<D然后 标签9.标题=A 语句结束 语句结束

    标签9.标题=A 标签10.标题=A 语句结束 语句结束

    如果A<D和A<C和A<B那么 标签9.标题=A 如果A>D和A>C和A>B那么 标签10.标题=A 语句结束 语句结束

    标签9.标题=A 否则 如果A>D和A>B和A>C然后 标签10.标题=A 语句结束 语句结束

    标签9.标题=B 否则 如果B>C和B>A和B>D然后 语句结束 语句结束

    如果B<C和B<D和B<A然后 标签9.标题=B 否则 如果B>C和B>D和B>A然后 标签10.标题=B 语句结束 语句结束

    标签9.标题=B 否则 标签10.标题=B 语句结束 语句结束

    如果B<A和B<D和B<C然后 标签9.标题=B 否则 如果B>A和B>D和B>C然后 标签10.标题=B 语句结束 语句结束

    如果B<D和B<C和B<A然后 标签9.标题=B 否则 如果B>D和B>C和B>A然后 标签10.标题=B 语句结束 语句结束

    如果B<D和B<A和B<C然后 标签9.标题=B 否则 如果B>D和B>A和B>C然后 标签10.标题=B 语句结束 语句结束

    如果C<A和C<B和C<D然后 否则 语句结束 语句结束

    如果C<A和C<D和C<B那么 标签9.标题=C 否则 如果C>A和C>D和C>B那么 标签10.标题=C 语句结束 语句结束

    如果C<B和C<A和C<D然后 标签9.标题=C 否则 标签10.标题=C 语句结束 语句结束

    If C < B And C < D And C < A Then
    Label9.Caption = C
    

    否则 标签10.标题=C 语句结束 语句结束

    If C < D And C < A And C < B Then
    Label9.Caption = C
    Else
    If C > D And C > A And C > B Then
    Label10.Caption = C
    End If
    

    语句结束

      If C < D And C < B And C < A Then
     Label9.Caption = C
    Else
    If C > D And C > B And C > A Then
    Label10.Caption = C
    End If
    

    语句结束

     If D < A And D < B And D < C Then
    Label9.Caption = D
    

    否则 如果D>A和D>B和D>C然后 语句结束 语句结束

    If D < A And D < C And D < B Then
    Label9.Caption = D
    

    否则 标签10.标题=D 语句结束 语句结束

    If D < B And D < A And D < C Then
    Label9.Caption = D
    

    否则 如果D>B和D>A和D>C然后 标签10.标题=D 语句结束 语句结束

    If D < B And D < C And D < A Then
    Label9.Caption = D
    Else
    If D > B And D > C And D > A Then
    Label10.Caption = D
    End If
    End If
    
    If D < C And D < B And D < A Then
    Label9.Caption = D
    Else
    If D > C And D > B And D > A Then
    Label10.Caption = D
    End If
    End If
    
    If D < C And D < A And D < B Then
     Label9.Caption = D
    Else
    If D > C And D > A And D > B Then
    Label10.Caption = D
    End If
    End If
    Command2.Enabled = True
    
    If A = D And A > C And A > B Then
    MsgBox "Same highest numbers (" + A + ") is inputted."
    highest = A
    Label10.Caption = highest
    Else
    If A = D And A < C And A < B Then
    MsgBox "Same lowest numbers (" + A + ") is inputted."
    lowest = A
    Label9.Caption = lowest
    End If
    End If
    
    
    If A = B And A > C And A > D Then
    MsgBox "Same highest numbers (" + A + ") is inputted."
    highest = A
    Label10.Caption = highest
    Else
    If A = B And A < C And A < D Then
    MsgBox "Same lowest numbers (" + A + ") is inputted."
    lowest = A
    Label9.Caption = lowest
    End If
    End If
    
    
    If B = D And B > A And B > C Then
    MsgBox "Same highest numbers (" + B + ") is inputted."
    highest = B
    Label10.Caption = highest
    Else
    If B = D And B < A And B < C Then
    MsgBox "Same lowest numbers (" + B + ") is inputted."
    lowest = B
    Label9.Caption = lowest
    End If
    End If
    
    If B = C And B > D And B > A Then
    MsgBox "Same highest numbers (" + B + ") is inputted."
    highest = B
    Label10.Caption = highest
    Else
    If B = C And B < D And B < A Then
    MsgBox "Same lowest numbers (" + B + ") is inputted."
    lowest = B
    Label9.Caption = lowest
    End If
    End If
    
    
    If C = A And C > D And C > B Then
    MsgBox "Same highest numbers (" + C + ") is inputted."
    highest = C
    Label10.Caption = highest
    Else
    If C = A And C < D And C < B Then
    MsgBox "Same lowest numbers (" + C + ") is inputted."
    lowest = C
    Label9.Caption = lowest
    End If
    End If
    
    If C = D And C > B And C > A Then
    MsgBox "Same highest numbers (" + C + ") is inputted."
    highest = C
    Label10.Caption = highest
    Else
    If C = D And C < B And C < A Then
    MsgBox "Same lowest numbers (" + C + ") is inputted."
    lowest = C
    Label9.Caption = lowest
    End If
    End If
    
    End Sub
    
    Private Sub Command2_Click()
    Text1.Text = Clear
    Text2.Text = Clear
    Text3.Text = Clear
    Text4.Text = Clear
    Label9.Caption = Clear
    Label10.Caption = Clear
    Command2.Enabled = False
    Command1.Enabled = False
    Text1.SetFocus
    
     End Sub
    
    Private Sub Command3_Click()
    End
    End Sub
    
    Private Sub Form_Load()
    Command2.Enabled = False
    Command1.Enabled = False
    End Sub
    
    Private Sub Text1_Change()
    Command1.Enabled = True
    
    End Sub