PDA

View Full Version : Sortering av två vektorer


demo
2000-07-04, 22:36
Hej!

Har gjort en sökmaskin som söker efter ett av användaren valt ord, bland html-filerna på servern.

I en vektor lagras antalet träffar för respektive fil som genomsöks. I den andra vektor lagras det värde som finns inom <TITLE>-taggen på html-filen.

Således får jag en vektor, exempelvis $traffar[1] som innehåller antalet träffar och en vektor $titel[1] som innehåller html-filens titel.

Nästa fil får värdet $traffar[2] osv...

När resultatet skrivs ut på en html-sida, så fungerar allt ok. Dock skulle jag vilja ha dessa vektorer sorterade på antalet träffar, med början på högsta värdet, och sedan gradvis nedåt.

När det gäller @arrays så fanns det ett exempel tidigare i ett inlägg, och då kan man ju använda kommandot sort så är problemet löst.

Hur sorterar man dessa vektorer lättast, eller finns det något kommando typ sort även för dessa vektorer?
Eller kan man översätta dessa vektorer till "@arrays" på ett lämpligt sätt?

Mvh,
Demo


[Redigerat av demo den 05 jul 2000]

Robban
2000-07-05, 01:48
Tycker inte riktigt det är logiskt att dela upp det hela i flera arrayer. Borde vara smidigare att använda en flerdimensionell array:

Ett exempel. Sida1 har 12 träffar och titeln "Titel1". Sida 2 har 5 träffar och titeln "Titel2".

$foobar[0][0] = 12;
$foobar[0][1] = 'Titel1';
$foobar[1][0] = 5;
$foobar[1][1] = 'Titel2';

Kan även skrivas:

@foobar = ([12, 'Titel1'], [5, 'Titel2']);

Och så vidare ...

Sedan sorterar du enkelt denna tvådimensionella array i träffordning (störst antal träffar först).

@foobar = sort { $b->[0] <=> $a->[0] } @foobar;

För att sedan skriva ut titeln på den sida som fått flest träffar:

print $foobar[0][1];

------------------
Robban < robban@lipogram.com >

demo
2000-07-05, 21:07
Hej å´tack för lektionen ;)

Var ett ganska smidigt sätt att arbeta med vektorer som du visade.

Tack för hjälpen!

Mvh,
Demo