数组排序3
Posted VB.Net
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组排序3相关的知识,希望对你有一定的参考价值。
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。
在上一节中最后实际使用的是String的CompareTo方法作比较,不太直观。本节内容中更容易看出返回负值排前面。
在扑克牌游戏 斗地主 中通常是按照大王、小王、2、A、K、Q、J、10、……、3的大小顺序。在做代码设计的时候可以先按照牌名称放到数组中,然后按照获得的牌名在数组中的位置排序,具体类代码如下:
Public Class poker
Implements IComparable(Of poker)
Public Property cardid As Integer
Public Property cardName As String
Private cards() As String = "Red Joker", "Black Joker", "Tow",
"Ace", "King", "Queen", "Jack",
"Ten", "Nine", "Eight", "Seven", "Six", "Five", "Four", "Three"
Sub New(ByVal id As Integer, ByVal Name As String)
Me.cardid = id
Me.cardName = Name
End Sub
Public Function CompareTo(other As poker) As Integer Implements IComparable(Of poker).CompareTo
Dim pos1 As Integer
Dim pos2 As Integer
pos1 = Array.IndexOf(cards, cardName)
pos2 = Array.IndexOf(cards, other.cardName)
If pos1 <= pos2 Then
Return -1
Else
Return 1
End If
End Function
Public Overrides Function ToString() As String
Return cardid & ":" & cardName
End Function
End Class
其中代码:
If pos1 <= pos2 Then
Return -1
Else
Return 1
End If
可以简化为:
Return (pos1 - pos2)
在Sub Main中的使用如下:
Dim testpoker() As poker = New poker()
New poker(1, "Tow"),
New poker(2, "Ace"),
New poker(3, "Five"),
New poker(4, "Red Joker"),
New poker(5, "Seven"),
New poker(6, "Queen"),
New poker(7, "Three"),
New poker(8, "Nine")
Array.Sort(testpoker)
For i As Integer = 0 To testpoker.Length - 1
Console.WriteLine(testpoker(i).ToString & " ")
Next
Console.ReadKey()
排序输出如下图所示:
由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供参考。
学习更多vb.net知识,请参看vb.net 教程 目录
以上是关于数组排序3的主要内容,如果未能解决你的问题,请参考以下文章