Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 如何在VBScript中根据两个值对播放器进行排序_Sorting_Vbscript - Fatal编程技术网

Sorting 如何在VBScript中根据两个值对播放器进行排序

Sorting 如何在VBScript中根据两个值对播放器进行排序,sorting,vbscript,Sorting,Vbscript,在我的程序中,我想根据两个值(分数和以前的排名)对球员进行排序,我已经设法根据刚才的分数进行排序 我想重新排序,如果一个或多个球员有相同的分数,但球员与最低的前排名应该显示第一 dim mPlayer(30) Class Player dim score dim name dim lowestRank End Class dim sorted, i dim tempPlayer Set tempPlayer = New Player sorted = False Do

在我的程序中,我想根据两个值(分数和以前的排名)对球员进行排序,我已经设法根据刚才的分数进行排序

我想重新排序,如果一个或多个球员有相同的分数,但球员与最低的前排名应该显示第一

dim mPlayer(30)

Class Player
    dim score
    dim name
    dim lowestRank
End Class

dim sorted, i
dim tempPlayer
Set tempPlayer = New Player
sorted = False
Do Until sorted
    sorted = True
    For i = 0 To mNumPlayers - 2
        If (mPlayer(i + 1).score > mPlayer(i).score) Then
            ' swap
            sorted = False
            Call CopytempPlayerData(tempPlayer, mPlayer(i))
            Call CopytempPlayerData(mPlayer(i), mPlayer(i + 1))
            Call CopytempPlayerData(mPlayer(i + 1), tempPlayer)
        End If
    Next
Loop

Set temptempPlayer = Nothing
lstPlayers.Clear()

For i = 0 To mPlayer - 1
   lstPlayers.Items.add(mPlayer(i).name)
Next
阅读文档。语法:

适用于您的以下情况:

    If (mPlayer(i + 1).score > mPlayer(i).score) Then
        ' swap
        sorted = False
        Call CopytempPlayerData(tempPlayer, mPlayer(i))
        Call CopytempPlayerData(mPlayer(i), mPlayer(i + 1))
        Call CopytempPlayerData(mPlayer(i + 1), tempPlayer)
    Else If (mPlayer(i + 1).score = mPlayer(i).score) Then
        ''' not sure about Comparison Operator in next condition
        If (mPlayer(i + 1).lowestRank < mPlayer(i).lowestRank) Then
          ' swap
          sorted = False
          Call CopytempPlayerData(tempPlayer, mPlayer(i))
          Call CopytempPlayerData(mPlayer(i), mPlayer(i + 1))
          Call CopytempPlayerData(mPlayer(i + 1), tempPlayer)            
        End If
    End If
阅读文档。语法:

适用于您的以下情况:

    If (mPlayer(i + 1).score > mPlayer(i).score) Then
        ' swap
        sorted = False
        Call CopytempPlayerData(tempPlayer, mPlayer(i))
        Call CopytempPlayerData(mPlayer(i), mPlayer(i + 1))
        Call CopytempPlayerData(mPlayer(i + 1), tempPlayer)
    Else If (mPlayer(i + 1).score = mPlayer(i).score) Then
        ''' not sure about Comparison Operator in next condition
        If (mPlayer(i + 1).lowestRank < mPlayer(i).lowestRank) Then
          ' swap
          sorted = False
          Call CopytempPlayerData(tempPlayer, mPlayer(i))
          Call CopytempPlayerData(mPlayer(i), mPlayer(i + 1))
          Call CopytempPlayerData(mPlayer(i + 1), tempPlayer)            
        End If
    End If

尝试按
100000*mPlayer(i)排序。得分±mPlayer(i)。LowerStrank
而不是按裸
mPlayer(i)排序。得分
,其中替换
100000
为最大
得分
值。但是,看看……没有最高分数。我将尝试mPlayer(I).得分±mPlayer(I).按
100000*mPlayer(I).得分±mPlayer(I).低层排序,而不是按裸
mPlayer(I).得分
替换
100000
最大
得分
值。但是,看看……没有最高分数。我将尝试mPlayer(I)。分数±mPlayer(I)。LowerStrank
    If (mPlayer(i + 1).score > mPlayer(i).score) Then
        swapPlayers
    Else If (mPlayer(i + 1).score = mPlayer(i).score) Then
        ''' not sure about Comparison Operator in next condition
        If (mPlayer(i + 1).lowestRank < mPlayer(i).lowestRank) Then
            swapPlayers
        End If
    End If

' remaining script statements here

Sub swapPlayers
        ' swap
        sorted = False
        Call CopytempPlayerData(tempPlayer, mPlayer(i))
        Call CopytempPlayerData(mPlayer(i), mPlayer(i + 1))
        Call CopytempPlayerData(mPlayer(i + 1), tempPlayer)
End Sub