【发布时间】:2016-04-21 00:10:39
【问题描述】:
在我的程序中,我想根据两个值(得分和以前的排名)对玩家进行排序,我已经设法根据得分进行排序..
如果一个或多个玩家的分数相同,但我想重新排序,但之前排名最低的玩家应该首先显示。
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
【问题讨论】:
-
尝试按
100000 * mPlayer(i).score ± mPlayer(i).lowestRank排序,而不是按mPlayer(i).score排序,其中100000替换为最大score值。不过,看看Sorting Algorithms... -
没有最高分。我会尝试 mPlayer(i).score ± mPlayer(i).lowestRank