<%@ Language=VBScript %>
<%
Option Explicit
Response.Expires = 0
On Error Resume Next 

'*****************************************************************
'Variablendeklarationen
Dim arrvar(3,4)
Dim intsortcolumn


'*****************************************************************
'Variableninitialisierung
arrvar(0,0) = 3
arrvar(1,0) = 2
arrvar(2,0) = 1

arrvar(0,1) = "A"
arrvar(1,1) = "D"
arrvar(2,1) = "C"

arrvar(0,2) = DateValue("1.7.61")
arrvar(1,2) = DateValue("20.6.59")
arrvar(2,2) = DateValue("1.1.98")

arrvar(0,3) = "**"
arrvar(1,3) = "***"
arrvar(2,3) = "*"


'*****************************************************************
'Lokale Prozeduren und Funktionen

'Parameter dieser Prozedur
' - arrvar: ein zweidimensionaler Array, wobei erste Dimension
'     den Datensätzen und zweite Dimension den Spalten entspricht
' - intsortcolumn: Spalte, nach der sortiert wird (beginnt bei 0!)
Sub procarrbubblesort (ByRef arrvar, ByVal intsortcolumn)
  Dim blnallesok
  Dim intcounter
  Dim intinnercounter
  Dim arrhelp
  
  ReDim arrhelp(UBound(arrvar,2)) 
  'Response.Write("UBound: " & UBound(arrvar,1) & "<br />")
  'Response.Write("UBound: " & UBound(arrvar,1) & "<br />")
  
  Do
    blnallesok = true
    'Achtung: UBound liefert bei eindimensionalen Arrays den letzten Index,
    'd.h. Anzahl Elemente - 1, bei mehrdimensionalen Arrays dagegen die 
    'Anzahl Elemente -> deshalb hier UBound - 2!!!
    For intcounter = 0 to UBound(arrvar,1) - 2
      'Response.Write(intcounter & ". Durchgang<br />" & vbCrLf)
      if arrvar(intcounter,intsortcolumn) > arrvar(intcounter+1,intsortcolumn) then
        For intinnercounter = 0 to UBound(arrhelp,1) - 1
          arrhelp(intinnercounter) = arrvar(intcounter, intinnercounter)
          arrvar(intcounter,intinnercounter) = arrvar(intcounter+1,intinnercounter)
          arrvar(intcounter+1,intinnercounter) = arrhelp(intinnercounter)
        Next
        blnallesok = false
      end if
    Next
  Loop While blnallesok = false
End Sub

Sub procshowarrayastable(ByVal arrvar)
  Dim intcounter
  Dim intinnercounter

  Response.Write("<table border=""1"">" & vbCrLf)
  For intcounter = 0 to UBound(arrvar,1) - 1
    Response.Write("  <tr>" & vbCrLf)
    For intinnercounter = 0 to UBound(arrvar,2) - 1
      Response.Write("    <td>" & arrvar(intcounter,intinnercounter) & _
         "</td>" & vbCrLf)
    Next    
    Response.Write("  </tr>" & vbCrLf)
  Next
  Response.Write("</table>" & vbCrLf)
End Sub

'*****************************************************************
'Anfang Code


'*****************************************************************
'Anfang <html>
%>

<!--#include virtual="asppages/silvi/_include/preheader.inc" -->
<html>
  <head>
    <title>ASP nützliche Routinen: Zweidimensionalen Array sortieren mit Bubblesort</title>
    <meta name="description" content="" />
    <meta name="keywords" content="" />
<!--#include virtual="asppages/silvi/_include/header.inc" -->
  </head>
<body>
<%
'*****************************************************************
'Code innerhalb der HTML-Seite
Response.Write("<p><b>Zweidimensionalen Array sortieren mit Bubblesort</b></p>")
Response.Write("<i>Vor Sortierung:</i><br />")
call procshowarrayastable(arrvar)

intsortcolumn = 0 'beginnt bei 0
call procarrbubblesort(arrvar, intsortcolumn)
Response.Write("&nbsp;<br /><i>Sortiert nach Spalte " & _
  intsortcolumn + 1 & ":</i><br />")
call procshowarrayastable(arrvar)

intsortcolumn = 2
call procarrbubblesort(arrvar, intsortcolumn)
Response.Write("&nbsp;<br /><i>Sortiert nach Spalte " & _
  intsortcolumn + 1 & ":</i><br />")
call procshowarrayastable(arrvar)
%>

<!--#include virtual="asppages/silvi/_include/inchtmlnachspann.asp" -->
</body>
</html>

Demo: beispiele/070bubblesorttwodimensionalarray.asp

Letzter Update: 26.12.2021 17:48

Zurück zur Liste mit ASP-Beispielen auf  www.ecotronics.ch