How do I sort types

BlitzPlus Forums/BlitzPlus Programming/How do I sort types

jbomhold(Posted 2004) [#1]
Fast plan and easy question. How do I sort types.

John


Difference(Posted 2004) [#2]
Fast plan and easy answer. Look in the code archive.


Jeppe Nielsen(Posted 2004) [#3]
Here you go :)

Graphics 640,480,16,2
SetBuffer BackBuffer()

SeedRnd MilliSecs()

Type Player

Field name$
Field id

End Type

;just some names :)
Dim name$(9)

name$(0)="Jacob"
name$(1)="Emily"
name$(2)="Michael"
name$(3)="Hannah"
name$(4)="Joshua"
name$(5)="Madison"
name$(6)="Matthew"
name$(7)="Samantha"
name$(8)="Andrew"
name$(9)="Ashley"


;create ten players
For l=1 To 10

p.Player=New Player

p\name$=name$(l-1) ;add name :)

p\id=Int(Rnd(0,100000)) ; just a random number

Next

unsort=1
Repeat
Cls

Text 320,10,"Press Space to toggle bestween to sort by name or id",1

If KeyHit(57)

	unsort=0

	sort=1-sort

	If sort=0
	
		SortPlayersID() ; sort by id
	
	Else 
	
		SortPlayersNAME(); sort by name
	
	EndIf

EndIf

drawPlayer()

If unsort=1 
	Text 240,400,"Players unsorted",1
Else
	If sort=0
		Text 240,400,"Sorted by id",1
	
	Else
		Text 240,400,"Sorted by names",1
	EndIf
EndIf


Flip

Until KeyDown(1)
End

Function drawPlayer()

For p.Player=Each Player

	Text 50,40+n*(FontHeight()+4),p\name$
	
	Text 250,40+n*(FontHeight()+4),"id :"+p\id
	
	n=n+1

Next

End Function

;Snippet modified from code acrhives :)

Function SortPlayersID()
    b.Player=First Player
    flag=True
    While flag
        flag=False
        bb.Player=Last Player
        While bb<>b
            bbb.Player=Before bb
            If bbb=Null Exit
            If bb\id<bbb\id  ;<------------- sort by ids
                Insert bbb After bb
                flag=True
            Else
                bb=bbb
            EndIf
        Wend
        b=After bb
    Wend
End Function

;Snippet modified from code acrhives :)

Function SortPlayersNAME()
    b.Player=First Player
    flag=True
    While flag
        flag=False
        bb.Player=Last Player
        While bb<>b
            bbb.Player=Before bb
            If bbb=Null Exit
            If bb\name$<bbb\name$ ;<------------- sort by name$
                Insert bbb After bb
                flag=True
            Else
                bb=bbb
            EndIf
        Wend
        b=After bb
    Wend
End Function