Drucken
Hauptkategorie: Entwicklung
Kategorie: yab
Zugriffe: 627

Ich habe manchmal das Problem, dass ein Array nicht sortiert ist. Deshalb habe ich eine kleine Subroutine geschrieben, die genau dieses Problem löst.

dim zahlen(10)

zahlen(1)=10
zahlen(2)=0.10
zahlen(3)=5
zahlen(4)=3
zahlen(5)=8
zahlen(6)=55
zahlen(7)=10777
zahlen(8)=22
zahlen(9)=0.0001
zahlen(10)=1034

sorting_array(zahlen(),"desc")

sub sorting_array(zahlen(),order$)
	// Asc or DESC
	if (order$="asc") then
		for k =1 to arraysize(zahlen(),1)
			for i =1 to arraysize(zahlen(),1)
				if (i=arraysize(zahlen(),1)) then
					break
				endif
				if (zahlen(i) > zahlen(i+1) ) then
					temp = zahlen(i)
					zahlen(i) = zahlen(i + 1)
					zahlen(i + 1) = temp	
				endif
			next i
		next k
	elseif (order$="desc") then
		for k =1 to arraysize(zahlen(),1)
			for i =1 to arraysize(zahlen(),1)
				if (i=arraysize(zahlen(),1)) then
						break
				endif
				if (zahlen(i) < zahlen(i+1) ) then
					temp = zahlen(i)
					zahlen(i) = zahlen(i + 1)
					zahlen(i + 1) = temp
				endif
			next i
		next k
	endif
end sub
for i=1 to arraysize(zahlen(),1)
	print zahlen(i)
next i

Dieses Beispiel gilt für Zeichenfolgen. Es sortiert zuerst Großbuchstaben, dann Kleinbuchstaben nach Option aufsteigend. Bei Option desc stehen die Großbuchstaben-Strings am Ende.

dim text$(10)

text$(1)="gert"
text$(2)="google"
text$(3)="Firefox"
text$(4)="Android"
text$(5)="ZigBee"
text$(6)="Hubert"
text$(7)="Hello"
text$(8)="Alfred"
text$(9)="Batman"
text$(10)="Robin"

sorting_array(text$(),"asc")

sub sorting_array(text$(),order$)
	// Asc or DESC
	if (order$="asc") then
		for k =1 to arraysize(text$(),1)
			for i =1 to arraysize(text$(),1)
				if (i=arraysize(text$(),1)) then
					break
				endif
				if (text$(i) > text$(i+1) ) then
					temp$ = text$(i)
					text$(i) = text$(i + 1)
					text$(i + 1) = temp$	
				endif
			next i
		next k
	elseif (order$="desc") then
		for k =1 to arraysize(text$(),1)
			for i =1 to arraysize(text$(),1)
				if (i=arraysize(text$(),1)) then
					break
				endif
				if (text$(i) < text$(i+1) ) then
					temp$ = text$(i)
					text$(i) = text$(i + 1)
					text$(i + 1) = temp$	
				endif
			next i
		next k
	endif
end sub
for i=1 to arraysize(text$(),1)
	print text$(i)
next i