Hej Den är inte tvådimensionell, så det borde inte vara något större problem. Så enkelt var det inte Jag förstår inte vad du menar är fel. Jag har ingen algorim ännu, därför frågan Jag förstår verkligen inte problemet. Tack, detta löste nog problemetHur sortera en tvådimensionell array
Har en tvådimensionell array enligt följande:
Test(0).A=10
Test(0).B=0,1
Test(1).A=50
Test(1).B=0,3
Test(2).A=30
Test(2).B=0,2
Test(3).A=100
Test(3).B=0,15
Vill sortera den efter värdet i A så att följande erhålls
Test(0).A=10
Test(0).B=0,1
Test(1).A=30
Test(1).B=0,2
Test(2).A=50
Test(2).B=0,3
Test(3).A=100
Test(3).B=0,15
Klarar av det med en endimensionell array men ej med en tvådimensionell
Är det någon som kan hjälpa mig ?
Sv: Hur sortera en tvådimensionell array
Byt ut ditt villkor
if array(i) > array(j)
till
if array(i).A > array(j).A
och du får nog göra en något krångligare swap-grej.Sv:Hur sortera en tvådimensionell array
som du ser så har Test(2) blivit Test(1) och tvärtom
Test(1).A=50
Test(1).B=0,3
Test(2).A=30
Test(2).B=0,2
Test(1).A=30
Test(1).B=0,2
Test(2).A=50
Test(2).B=0,3 Sv: Hur sortera en tvådimensionell array
Hur ser din sorteringsalgoritm ut?Sv:Hur sortera en tvådimensionell array
Skillnaden är att indexen har bytt plats
Vill ha den variabeln med lägst värde på 'A' till index 0 (Test(0).A)Sv: Hur sortera en tvådimensionell array
Låt säga att du har en Bubble sort:
dim arr(1 to 10) as integer
'...
for i = 1 to 10
for j = i to (10-i+1)
if arr(i) > arr(i+1) then
tmp = arr(i)
arr(i) = arr(i+1)
arr(i+1) = tmp
end if
next j
next i
Det enda du behöver göra då är att ändra villkoret
if arr(i) > arr(i+1) then
till
if arr(i).A > arr(i+1).A then
och se till att tmp har rätt typ (alternativt göra hela swappen själv).
Sv:Hur sortera en tvådimensionell array
Problemet var att jag även måste flytta med mig värdet för B
Gjorde så här:
dim arr(1 to 10) as integer
'...
for i = 1 to 10
for j = i to (10-i+1)
if arr(i).A > arr(i+1).A then
tmp = arr(i).A
tmp2=arr(i).B
arr(i) = arr(i+1)
arr(i+1).A= tmp
arr(i+1).B=tmp2
end if
next j
next i