Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Sortera en sträng ?

Postades av 2001-09-17 15:02:00 - Tommy Mogren, i forum asp - allmänt, Tråden har 7 Kommentarer och lästs av 924 personer

Hej,

Jag får en sträng som jag vill sortera om i stigande ordning innan jag delar upp den och använder värdena.

Min sträng (StrSlidesOrdered) ger mig siffror med separatorn ,
Exempel: (12435, 1232, 1545, 54234, 26011, 24344)

Dessa vill jag sortera om i nummer ordning.
Sedan kör jag split och tar hand om värdena...
typ,

Dim arrSlideCollection, iSlide
arrSlideCollection = Split(StrSlidesOrdered, ",", -1, 1)
For Each iSlide in arrSlideCollection
Response.Write (strSlide)
Response.Write "<br>"




Eller är det lättare att sortera efter jag splittat värdena ??

Tacksam för svar eller hjälp på vägen...
/Tommy


Svara

Sv: Sortera en sträng ?

Postades av 2001-09-18 19:08:00 - Daniel Sävhammar

Det är helt klart mycket lättare att sortera en array än en sträng.

Det finns ingen inbygd sorteringsfunktion för arrayer i ASP/VBScript, så
man får göra en egen. Något i stil med:

<code>
Sub BubbleSort(ByRef a)
Dim vTmp
Dim i, j, n
n = UBound(a)
' börja sortera
For i = 0 To n
For j = 0 To i
' kolla om talen ska byta plats
If a(i) < a(j) Then
vTmp = a(i)
a(i) = a(j)
a(j) = vTmp
End If
Next
Next
End Sub
</code>

Funktionen ovan sorterar en array med tal.
Använd den med:
<code>
Call BubbleSort(arrSlideCollection)
</code>

Det bör väl nämnas att denna sorteringsalgoritm inte är speciellt snabb på stora arrayer, men fungerar bra vid mindre. Hoppas du fick lite hjälp.


Svara

Sv: Sortera en sträng ?

Postades av 2001-09-19 09:32:00 - Roger Jarl

Den här jämför ASCII-värdena. Då hamnar talen i fel ordning, förutsatt att man vill sortera efter det egentliga värdet. Exempelvis hamnar 12345 mellan talen 1232 och 1545.


Svara

Sv: Sortera en sträng ?

Postades av 2001-09-19 09:36:00 - Tommy Mogren

Tack!

Den hjälpte mig långt på vägen.

Den fungerar nästan helt perfekt till och med.
Bara ett problem....

Den första posten i Arrayen, kommer alltid sist sedan när jag sorterat den och skrivit ut den... :-o

Så här ser det ut, med din kod.

Sub BubbleSort(ByRef a)
Dim vTmp
Dim i, j, n
n = UBound(a)
' börja sortera
For i = 0 To n
For j = 0 To i
' kolla om talen ska byta plats
If a(i) < a(j) Then
vTmp = a(i)
a(i) = a(j)
a(j) = vTmp
End If
Next
Next
End Sub

Dim arrSlideCollection, iSlide
arrSlideCollection = Split(StrSlidesOrdered, ",", -1, 1)
'Sortera bilderna i nummerordning
Call BubbleSort(arrSlideCollection)
For Each iSlide in arrSlideCollection
Response.Write (strSlide)
Response.Write "<br>"

StrSlidesOrdered kan till exempel innehålla
(18345,21300, 19000, 123, 4321)

Nu skrivs de ut:
123
4321
19000
21300
18345

Vilket är en riktigt bra bit på vägen.... :-)
Är ny på ASP så jag har lite svårt att hitta varför den inte flyttar första posten rätt.

*suck*
/Tommy


Svara

Sv: Sortera en sträng ?

Postades av 2001-09-19 18:49:00 - Daniel Sävhammar

Som Roger påpekade kommer funktionen att sortera "fel" om arrayen innehåller strängar som i ditt fall. Därför behöver du byta ut en rad:

Byt:
<code>
' kolla om talen ska byta plats
If a(i) < a(j) Then
</code>

Mot:
<code>
' kolla om talen ska byta plats
If CLng(a(i)) < CLng(a(j)) Then
</code>

Du kan testa att skriva

<code>
Response.Write Join(arrSlideCollection, "<br>")
</code>

direkt efter sorteringen för att se om det blivit rätt så långt.





Svara

Sv: Sortera en sträng ?

Postades av 2001-09-19 19:40:00 - Andreas Hillqvist

Har "Lånat" SvenPon's QuickSort Funktion. Visar i detta exemplet hur man sorterar en array av strängar oce en med tal:

<code>
<%
Option Explicit

Sub QuickSort(Data, lower, upper)
Dim pivot, temp
Dim first, last, middle
first = lower
last = upper
middle = (first + last) / 2
pivot = Data(middle)
Do
While Data(first) < pivot
first = first + 1
Wend
While Data(last) > pivot
last = last - 1
Wend
If first <= last Then
temp = Data(first)
Data(first) = Data(last)
Data(last) = temp
first = first + 1
last = last - 1
End If
Loop Until first > last
If lower < last Then
Call QuickSort(Data, lower, last)
End If
If first < upper Then
Call QuickSort(Data, first, upper)
End If
End Sub

Dim Data
Dim first
Dim last
Dim Index
Data = Array("b","d","a","e","c")
first = LBound(Data)
last = UBound(Data)
QuickSort Data, first, last
Response.Write Join(Data,"<BR>" & vbCrLf) & vbCrLf & vbCrLf

Data = Split("20;9;100;4;46;70",";")
first = LBound(Data)
last = UBound(Data)
For Index = first To last
Data(Index) = CDbl(Data(Index))
Next
QuickSort Data, first, last
Response.Write Join(Data,"<BR>" & vbCrLf)

%>
</code>


Svara

Sv: Sortera en sträng ?

Postades av 2001-09-20 09:57:00 - Tommy Mogren

MacGyver: Stort Tack!

Fungerar helt perfekt för mig nu!
Nu har jag dessutom läst på lite, så nu vet jag varför det inte funkade i första läget..

:-)

Tack Andreas för din variant. Skall kika på den och försöka förstå vad den gör, och vad som skiljer de åt...

Tack!

/Tommy - på väg mot nya kul ASP projekt i takt med att kunskaperna ökar!


Svara

Sv: Sortera en sträng ?

Postades av 2001-09-20 10:07:00 - Jonas Lundström

Jag rekomenderar dig att använda QuickSort metoden om du ska ha en som är snabb.. Det finns däremot en snabbare variant..

Du kan ju kika på den här sidan, där finns den en bunt med sorterings algoritmer och där kan du även se hur snabba dom är..

http://www.cs.ubc.ca/spider/harrison/Java/sorting-demo.html

Koden är däremot skiven i Java, men det är inga större problem att skriva om det till VB eftersom det "bara" är en algoritm och inte många interna funktioner i Java som används!

MVH
//Jonas


Svara

Nyligen

  • 14:16 Indian online casino
  • 14:15 Indian online casino
  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 846
27 961
271 763
488
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies