/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Sortering i ASP
Fra : Rasmus Christian Kaa~


Dato : 05-08-03 17:25

Har i nogen ideer til hvordan man HURTIGT kan sortere et forholdsvist stort
array?

Mvh, Rasmus



 
 
Torben Brandt (05-08-2003)
Kommentar
Fra : Torben Brandt


Dato : 05-08-03 18:16

Rasmus Christian Kaae wrote:
> Har i nogen ideer til hvordan man HURTIGT kan sortere et forholdsvist stort
> array?

Nej, ikke lige på stående fod, men vil bare minde dig om, at hvis data i
arrayet stammer fra en database, så vil det jo være nemmere at sortere,
når du trækker ud fra databasen.

/Torben


Rasmus Christian Kaa~ (05-08-2003)
Kommentar
Fra : Rasmus Christian Kaa~


Dato : 05-08-03 20:32


"Torben Brandt" <name@domain.invalid> skrev i en meddelelse
news:3F2FE66B.5000502@domain.invalid...
> Rasmus Christian Kaae wrote:
> > Har i nogen ideer til hvordan man HURTIGT kan sortere et forholdsvist
stort
> > array?
>
> Nej, ikke lige på stående fod, men vil bare minde dig om, at hvis data i
> arrayet stammer fra en database, så vil det jo være nemmere at sortere,
> når du trækker ud fra databasen.


Ja, det er jeg klar over Men dataene stammer fra et ret kompliceret
data-udtræk hvor jeg ikke kan gennemskue hvordan det skal sorteres .. Min
løsning p.t. er ved brug af en quicksort-implementation jeg fandt et sted
via google.com - den virker, men det er jo ikke optimalt!



Jesper Stocholm (05-08-2003)
Kommentar
Fra : Jesper Stocholm


Dato : 05-08-03 20:42

Rasmus Christian Kaae wrote :

>
> "Torben Brandt" <name@domain.invalid> skrev i en meddelelse
> news:3F2FE66B.5000502@domain.invalid...
>> Rasmus Christian Kaae wrote:
>> > Har i nogen ideer til hvordan man HURTIGT kan sortere et
>> > forholdsvist stort array?
>>
>> Nej, ikke lige på stående fod, men vil bare minde dig om, at hvis
>> data i arrayet stammer fra en database, så vil det jo være nemmere at
>> sortere, når du trækker ud fra databasen.
>
> Ja, det er jeg klar over Men dataene stammer fra et ret
> kompliceret data-udtræk hvor jeg ikke kan gennemskue hvordan det skal
> sorteres ..

Måske ville du så få den bedste løsning ved at kunne gennemskue din
løsning på databasesiden. Hertil kan du jo evt spørge i dk.edb.database,
hvor der sidder nogle meget kompetente databasefolk. At forsøge at
sortere på dit array - i stedet for at kigge på selve udtrækket - virker
på mig lidt som en lappeløsning.

> Min løsning p.t. er ved brug af en
> quicksort-implementation jeg fandt et sted via google.com - den
> virker, men det er jo ikke optimalt!

Øehm - der er jo en grund til at den hedder QuickSort - hvorfor opfylder
den ikke dit behov? Du kan også forsøge med BubbleSort - den kan du bla.
finde på activedeveloper.dk .

--
Jesper Stocholm - http://stocholm.dk
if you are competing with the darknet, you must compete on the darknet's
own terms: that is convenience and low cost rather than additional
security. ( http://crypto.stanford.edu/DRM2002/darknet5.doc )

Rasmus Christian Kaa~ (05-08-2003)
Kommentar
Fra : Rasmus Christian Kaa~


Dato : 05-08-03 20:53

> Måske ville du så få den bedste løsning ved at kunne gennemskue din
> løsning på databasesiden. Hertil kan du jo evt spørge i dk.edb.database,
> hvor der sidder nogle meget kompetente databasefolk. At forsøge at
> sortere på dit array - i stedet for at kigge på selve udtrækket - virker
> på mig lidt som en lappeløsning.

Det var måske også forkert formuleret af mig, men problemet er, at jeg gør
følgende:

1) Find alle brugere der har minimum 2 indlæg
2) Summer alle disse bruges scores fra de 2 nyeste indlæg
3) Sorter 2) og vis de 50 bedste

Dette gør jeg p.t. i 2 SQL-udtræk og en enkelt quicksort-kald, problemet her
er bare at jeg er nød til at trække alle brugere med minimum 2 indlægs data
ud, fremfor bare at kunne tage de 50 bedste. Jeg har forsøgt forskellige
løsninger, men de giver ikke det korrekte resultat.

>
> > Min løsning p.t. er ved brug af en
> > quicksort-implementation jeg fandt et sted via google.com - den
> > virker, men det er jo ikke optimalt!
>
> Øehm - der er jo en grund til at den hedder QuickSort - hvorfor opfylder
> den ikke dit behov? Du kan også forsøge med BubbleSort - den kan du bla.
> finde på activedeveloper.dk .

Ahem, behov == hastighed og indenfor hastighed så er bubblesort på ingen
måde bedre end quicksort. Det jeg mente var, at det nok ville være hurtigst
at sortere i databasen fremfor i asp-script.




Jesper Stocholm (05-08-2003)
Kommentar
Fra : Jesper Stocholm


Dato : 05-08-03 21:14

Rasmus Christian Kaae wrote :

> Det var måske også forkert formuleret af mig, men problemet er, at jeg
> gør følgende:
>
> 1) Find alle brugere der har minimum 2 indlæg
> 2) Summer alle disse bruges scores fra de 2 nyeste indlæg
> 3) Sorter 2) og vis de 50 bedste

Ok - alt afhængig af din database, så skulle det nu nok kunne lade sig gøre at sortere
det på databasesiden, men det er du nok nødt til at spørge i databasegruppen om.

>> Øehm - der er jo en grund til at den hedder QuickSort - hvorfor
>> opfylder den ikke dit behov? Du kan også forsøge med BubbleSort - den
>> kan du bla. finde på activedeveloper.dk .
>
> Ahem, behov == hastighed og indenfor hastighed så er bubblesort på
> ingen måde bedre end quicksort.

Nu er det lidt tid siden jeg sidst sad med en akademisk indgang til
sorteringsalgoritmer, men så vidt jeg kan huske er performance ved (alle)
sorteringsalgoritmer meget afhængig af de data der skal sorteres. Derfor kan
BubbleSort meget vel outperforme QuickSort i dit tilfælde.

> Det jeg mente var, at det nok ville
> være hurtigst at sortere i databasen fremfor i asp-script.

Det tror jeg til gengæld du har ret i.

--
Jesper Stocholm - www.stocholm.dk - www.asp-faq.dk
** De andre siger, at han er 16 **
Svar venligst til gruppen og ikke til mig privat !
Skriv under det du svarer på - www.usenet.dk/netikette/citatteknik.html

Lasse Reichstein Nie~ (05-08-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 05-08-03 22:47

Jesper Stocholm <jespers@stocholm.invalid> writes:

> Nu er det lidt tid siden jeg sidst sad med en akademisk indgang til
> sorteringsalgoritmer, men så vidt jeg kan huske er performance ved (alle)
> sorteringsalgoritmer meget afhængig af de data der skal sorteres.

Det er forskelligt. Nogle er afhængige, andre er ikke.

> Derfor kan BubbleSort meget vel outperforme QuickSort i dit
> tilfælde.

BubbleSort er kun hurtig på næsten-sorterede lister, og generelt
langsom (worst case: kvadratisk i antallet af elementer,
gennemsnitligt ca. det samme).

QuickSort er ofte hurtig. Dens worst case er også kvadratisk, men det
sker sjældent, og gennemsnitligt er den proportionalt med N*log(N)
(hvor N er antallet af elementer i listen). Den er nem at lave, har
lavt overhead og kræver ikke ekstra plads, så det er ofte den der
sorteringsalgoritme der bruges i biblioteker (som fx C's qsort)

MergeSort tager altid tid der er proportional med N*log(N), men kræver
ekstra plads at arbejde på (Bubble- og QuickSort kan gøres direkte i
den liste man arbejder på).

(Tiden måles her blot i hvor mange sammenligninger man laver på
elementerne i listen)

Hvis man har RIGTIGT mange elementer i listen, så skal man til at
tænke over hukommelsesstyring også, hvis man vil undgå at swappe
i evigheder. Google har tænkt meget over deres sortering :)

> > Det jeg mente var, at det nok ville
> > være hurtigst at sortere i databasen fremfor i asp-script.
>
> Det tror jeg til gengæld du har ret i.

Sandsynligvis. Hvis det havde været ASP.NET, som er compilet, så tror
jeg ikke forskellen nødvendigvis ville blive så stor (hvis du laver en
god implementation af en effektiv sorteringsalgoritme).

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
Art D'HTML: <URL:http://www.infimum.dk/HTML/randomArtSplit.html>
'Faith without judgement merely degrades the spirit divine.'

Peter Lykkegaard (05-08-2003)
Kommentar
Fra : Peter Lykkegaard


Dato : 05-08-03 22:07


"Rasmus Christian Kaae" <rasmusHATHAT@3kingsHATHAT.dk> wrote in message
news:bgp0rs$31jn$1@jarjarbinks.mobilixnet.dk...
>
>... dataene stammer fra et ret kompliceret
> data-udtræk hvor jeg ikke kan gennemskue hvordan det skal sorteres ..

Har du et recordset før du laver det om til et array - evt vha GetRows?
Løsningen kunne være at sortere recordsettet

mvh/Peter Lykkegaard



Jens Gyldenkærne Cla~ (05-08-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 05-08-03 22:01

Rasmus Christian Kaae skrev:

> 1) Find alle brugere der har minimum 2 indlæg
> 2) Summer alle disse bruges scores fra de 2 nyeste indlæg
> 3) Sorter 2) og vis de 50 bedste

I en ordentlig database (der understøtter subselects) skulle
ovenstånde kunne klares med en enkelt forespørgsel.

Hvilken database benytter du og hvordan er din tabelstruktur?

FUT: dk.edb.database (ret evt. manuelt til d.e.d.ms-access hvis det
er Access)
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408932
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste