Någon som har tips på hur man sorterar stora mulitidimensionella arrayer på snabbast möjliga sätt? På hur många kolumner vill du sortera? hej funkar det på flera kolumner? Skall man göra sådana sorteringar använder man SQL För det första, Axel, så startar du en fyra år gammal tråd. jag sökte på det jag var intresserad av och postade där i. om alla gjorde det så skulle man ha mindre trådar, som det är nu så finns många trådar om samma ämnen. men du menar att det finns ett bäst före datum på trådarna och en timelimit som man inte får posta efter? sql - visst - men vill inte blanda in vb:s objekt, ado eller vad de nu heter. de är för slöa vid stora datamängder. Det är väl bara att samla kolumnerna i någon datastruktur och sedan sortera på en av dessa, då hänger allt ihop med. Det enda du behöver specificera är vad du vill sortera på. Angående tidigare trådar; ja, eftersom frågan inte är direkt relaterad till tråden så passar den inte riktigt in. I övrigt bör man undvika trådar äldre än några månader av flera skäl. Tekniker ändras, det kan vara hårda diskussioner i trådar som man vill undvika att dra upp igen osv. "Någon som har tips på hur man sorterar stora mulitidimensionella arrayer på snabbast möjliga sätt? "Snabb sortering
/JensaKSv: Snabb sortering
Är det nästan sorterat eller helt slumpmässigt?
/Niklas JanssonSv: Snabb sortering
Du kan ta hem mitt uppskick QuickSort Array
och bygga om efter ditt behov Programarkivet:Sortera Array QuickSort
mvh
SvenSv:Snabb sortering
om jag har
3 kalle
2 östen
1 sverker
och jag vill sortera på båda kolumnerna?
jag vill alltså ha
1 sverker
2 östen
3 kalle
...inte
1 kalle
2 sverker
3 östen
alla kolumner skall "hänga med" i sorteringen, så att inte bara kolumn 1 sorteras - helt lönlöst - och det är tyvärr så de flesta sorteringsalgoritmer funkar - de går bara på en kolumn och hanterar inte det inbördet förhållandet mellan raderna.
om jag har t ex
obs vikt längd namn
1 50 1.60 adam
2 45 1.53 kalle
så är det ju inte acceptabelt att det blir
1 45 1.53 adam
då adam får helt fel uppgifter.
finns någon som har en bra multikolumn sort???
Sv: Snabb sortering
Sen om man får välja skall man undvika multidimensiona arrayer
Mycket bättre att göra en enda lång där de olika kolumnerna börjar på ett visst fack.
Eller så gör man tex 10 st enkla arrayer.
Då är det lätt att koppla ihop att fack 10231
i den ena arrayen hör ihop med 10231 i array 9Sv: Snabb sortering
För det andra, en algoritm handlar inte ett dugg om vilka kolumner du har och hur de hänger ihop. Det är pissenkelt att modifiera precis vilken algoritm som helst till att sortera radvis i en flerdimensionell vektor. Sv:Snabb sortering
om du vill kan jag starta en ny tråd ang detta. det kanske man borde då ingen riktigt bra generell sorterare faktiskt finns tillgänglig för nedladdning.
för det andra, om det nu är "pissenkelt" - kan du då inte göra oss alla en stor tjänst att posta lite fungerande kod som sorterar matriser och som hanterar olika datatyper?
"en algoritm handlar inte ett dugg om vilka kolumner du har"
en algoritm är ett givet sätt att lösa ett visst problem. om mitt problem inkluderar flera kolumner, så är det alltså en delmängd av problemet som skall lösas. en algoritm behöver inte vara, t ex: addera 1 till första mängden. gör så 10 gånger. en algoritm behöver inte vara så snäv, utan kan t ex vara ( i extremfallet): lös världsproblemen.
men men, om det nu är pissenkelt så varför inte posta lite kod till de behövande?Sv:Snabb sortering
vill bara sortera textfiler med inbördes förhållanden.
kolumn 2 måste också byta ordning om kolumn 1 gör det, annars är det ju av noll och ingen nytta med sorteringen.
jag hade en bra sorterare i min c:\temp katalog, tyvärr så har jag deletat den och tänkte höra mig för vad som finns innan jag återigen bygger den igen.Sv: Snabb sortering
/PeterSv:Snabb sortering
Angående algoritmer:
Det här handlar om sortertingsagoritmer. Implicit ingår det då två stycken operationer; jämför och byt plats. En sortertingsagoritm har ingenting att göra med vilka element som ingår.
Angående pissenkelt.
Eftersom du tydligen har ett par algoritmer som alla gör samma fel kan jag säga vad du ska ändra i dem.
Du har en algoritm som går igenom en vektor ett antal gånger. Vid något tillfälle testar algoritmen huruvida ett element är mindre än ett annat, vid något tillfälle byter den plats på elementet.
Om vi till exempel tar original-bubblesort:
<code>
dim vektor(1 to n) as integer, i as integer, j as integer, temp as integer
for i = 1 to n
for j = i to n-1
if vektor(j) > vektor(j+1) then
temp=vektor(j)
vektor(j) = vektor(j+1)
vektor(j+1) = temp
end if
next j
next i
</code>
Vi har då de två operationerna jämför ("vektor(j) > vektor(j+1)"), och byt plats ("temp = [...] vektor(j+1) = temp")
De två finns i någon form i alla sortertingsagoritmer.
Vill du då sortera till exempel en matris byter du ut jämförelsen till "matris(1, j) > matris(1, j+1)" och motsvarande med platsbytet.
Typ
temp = matris(, j)
matris( , j) = matris( , j+1)
matris( , j+1) = temp
(i just fallet matris kan ytterligare en loop behövas för att göra själva kopieringen till temporärt element)
Båda grejerna lägger man med fördel i egna metoder. compare(element1, element2) och swap(element1, element2).
Koden blir då:
<code>
dim vektor(1 to n) as integer, i as integer, j as integer, temp as integer
for i = 1 to n
for j = i to n-1
if compare(j, j+1) then
swap(j, j+1)
end if
next j
next i
</code>Sv: Snabb sortering
..precis min frågeställning. således borde det passa sig att "öppna tråden" (den var väl för övrigt inte stängd)
mm, tack för hjälpen.
jag vet hur det funkar, problemet är att jag hade en bra sorterare som jag slarvigt nog raderade. även om jag i teorin vet hur det funkar så är det jag vill undvika att skriva en ny, jag letar efter ett snudd på färdigt projekt att ladda ned.
finsn något bra "sorteringsobjekt" i vb .net, något färdigt? nåt som fungerar vid mkt stora datamängder?