数组排序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的主要内容,如果未能解决你的问题,请参考以下文章

数组排序3

Java中怎么对数组中的字符串进行排序

Java怎么让数组中元素按照牌值从小到大的顺序排列

sql查询并新增一列,按条件排序后给这一列赋值,并满足条件按序列赋值

扑克牌的排序

扑克牌顺子