webForumDet fria alternativet

arrayer..

6 svar · 351 visningar · startad av Thomasa

ThomasaMedlem sedan aug. 2002365 inlägg
#1

finns säkert sen tidigare men jag lyckas ändå inte hitta när jag söker..

jag har en array som ska innehålla ett värde med en distans och ett med ett id.

sparar dem nu genom att separera distansen och idt med :, jag har sedan en funktion som sorterar (som jag hittade här ;))

Den fungerar fin när jag bara sorterar distansen och inte tar med id:t i arrayen, så frågan är: Hur kan jag sortera distanserna och behålla id:t intill?

har helt hjärnsläpp :/

Function SortArray(arvektor)
Dim i,j, temp
for i = 0 to ubound(arvektor)
	for j = 1 to ubound(arvektor)
		if arVektor(i) < arVektor(j) then
			temp = arVektor(i)
			arVektor(i) = arVektor(j)
			arVektor(j) = temp
		end if
	next
next

End Function
LarsGMedlem sedan dec. 200012 465 inlägg
#2

Du borde använda en två-dimensionell array istället.

Dim v(22,1)

v(0,0) = distans
v(0,1) = id
...
SortArrray v

Sub SortArray(arvektor)
Dim i,j, temp
    for i = 0 to ubound(arvektor)
         for j = 1 to ubound(arvektor)
               if  arVektor(i,0) < arVektor(j,0) then
                   temp = arVektor(i,0)
                   arVektor(i,0) = arVektor(j,0)
                   arVektor(j,0) = temp
               end if
         next
    next
End Sub
ThomasaMedlem sedan aug. 2002365 inlägg
#3

Tack Lars, två-dimensionell array var en bra idé men den sorterar inte med subrutinen du skrivit, utan tar bort id:t istället, vad kan vara galet?

ThomasaMedlem sedan aug. 2002365 inlägg
#4

http://www.4guysfromrolla.com/webtech/011601-1.shtml

Där finns svaret på en fungerande sorteringsfunktion för 2 dimensionella arrayer om någon annan får samma problem!

Erik JuhlinMedlem sedan maj 20007 625 inlägg
#5

Gamla hederliga bubble-sort... :OO

LarsGMedlem sedan dec. 200012 465 inlägg
#6

Det som var galet var att jag glömde att även flytta det andra elementet i arrayen.

Sub SortArray(arvektor)
Dim i,j, temp
    for i = 0 to ubound(arvektor)
         for j = 1 to ubound(arvektor)
               if  arVektor(i,0) < arVektor(j,0) then
                   temp = arVektor(i,0)
                   arVektor(i,0) = arVektor(j,0)
                   arVektor(j,0) = temp
                   temp = arVektor(i,1)
                   arVektor(i,0) = arVektor(j,1)
                   arVektor(j,1) = temp
               end if
         next
    next
End Sub
ThomasaMedlem sedan aug. 2002365 inlägg
#7

ja då var ju din enklare :) nu löste de sig men tack så mycket iaf!!

Genererad på 368 ms · cache AV · v20260730165559-full.f96bc7eb