Jag har en fråga beträffande sotering av poster i en Array: Hej! Enkel bubbelsortering, lätt att memorera. Fungerar bra så länge du inte har allt för många element i arrayen, några tusen element är nog lugnt. Har du fler element så sök efter t ex QuickSort så hittar du algoritmer på nätet... Testa gärna Programarkivet:Sortera Array QuickSort "Till Per H och andra som är intresserad kan jag säga att det är onödigt att skriva ByRef Sedan beter sig inte alla språk lika heller ;) Jag har tidigare lagt in lite info med exempel om QuickSort under tips & tricks, [Slumpa och sortera (ett snabbare sätt)] Hej Janne! Hej Håkan. >"quicksort" ändras, lägg till Byval. mmm.. Sven. Oki ser det nu, det såg ut som en Array.Budskapet gäller Arrayer måste skickas med ByRef.Sortering av en Array.
Kan detta låta sig göras? I sådana fall hur ?Sv: Sortering av en Array.
Ja det gör det.
Såg att Svenpon har lagt in ett exempel i Programarkivet under vb matematik -> algoritmer.
//HåkanSv: Sortering av en Array.
<code>
Public Sub Sort(byref array() as string)
Dim i As Integer
Dim j As Integer
For i=lbound(array) to ubound(array)-1
For j=i+1 to ubound(arrray)
if array(i)>array(j) then
temp=array(i)
array(i)=array(j)
array(j)=temp
end if
next j
next i
End Sub
</code>Sv:Sortering av en Array.
Till Per H och andra som är intresserad kan jag säga att det är onödigt att skriva ByRef
det blir det alltid om man inte skriver ByVal.
Sen är det så skall du skicka en array så måste det alltid vara enl. det underförstådda ByRef.
Jag ser också att jag andvänt DefLng A-Z As Long.
Gör aldrig det !.Definiera alla Era variabler Lokalt(helst) eller Globalt.
Varför ?
Kanonjobbigt att Debugga.Finns inget stöd när Du nån gång skall Porta till annat tex .net
Det stora felet med VB är att det har alltid varit så förlåtande med slarvig kod
VB är ett kanon nybörjarspråk men det håller inte om du vill utveckla dig inom programmering.
För helv..... bry dig aldrig om att snegla på Vb.net , det är en av de största bluffer MS åstadkommit.
Spelet heter "framåt" och då gäller C , C# , Delphi
Bror Duktig ;-)Sv: Sortering av en Array.
det blir det alltid om man inte skriver ByVal. "
Jag vet Sven, men jag vägrar att skriva kod på det viset. Du och jag kanske vet vad som är default men alla vet det inte. Då är det mycket tydligare att alltid ange vad som avses.
Jag deklarerar heller aldrig variabler på modulnivå utan att ange Private eller Public. Jag gillar att vara tydlig när jag kodar helt enkelt...Sv:Sortering av en Array.
Och Sven: Vi är alla fortfarande mycket intresserade av att veta vad som är så fel med vb.net (jag gillar inte vb.net jag heller, kör c#, men då är vb 6 iaf. ett ännu större misstag...)Sv:Sortering av en Array.
//
JanneSv: Sortering av en Array.
Angående ditt tips 1605.
Skicka in den sorterade arrayen till QuickSorten och klocka den igen.
//HåkanSv:Sortering av en Array.
Först så bör anropet till funktionen "quicksort" ändras, lägg till Byval.
<code>
Private Sub quicksort(a() As Integer, Byval l As Long, Byval r As Long)
</code>
Problemet med att Quicksort tar relativt lång tid på sig att sortera en redan sorterad array är ett känt fenomen och det finns en del mer eller mindre bra men ingen 100%-ig lösning på problemet. Gör en "quicksort" sökning på nätet så får du en del matnyttig info om detta.
//
JanneSv: Sortering av en Array.
FEL
Du kan aldrig skicka en Array ByValSv: Sortering av en Array.
Känner till det. Ville bara få fram att QuickSort är bra, men har sin "svaghet".
Detta kan ju spela in beroende på hur det är tänkt att applikationen ska arbeta.
Håller förresten med Svenpon, att man inte skickar stora datamängder med ByVal.
//HåkanSv:Sortering av en Array.
Om du tittar på mitt anrop, i meddelandet du besvarat, så ser du att jag INTE har försökt skicka med arrayen som Byval men däremot de två andra parametrarna då de ska ha sina egna värden för varje rekursivt anrop.
God Jul
JanneSv: Sortering av en Array.
God Jul på dig och alla andra också :-)