i have one problem with the code:
it does change the variables but when i write the array to the output window it does not change!!!
i think it depends on the way i write it out...
when it works i will post it here
maybe u can take another look on it if u have time
i have added the tip from below so that the code does work (for people who need the code) Quote:Subroutine QuickSort(var ArtArr as array, m as Int, n as Int)
var i as int
var j as int
var temp1 as int
var temp2 as int
var temp3 as int
var temp4 as int
var k as int
var x as int
WriteLn("recusion")
If m = n Then return
If intElement(ArtArr, m,3) > intElement(ArtArr, n,3) Then {
temp1 = intElement(ArtArr, m, 1)
temp2 = intElement(ArtArr, m, 2)
temp3 = intElement(ArtArr, m, 3)
temp4 = intElement(ArtArr, m, 4)
setIntElement(intElement(ArtArr, n,1), ArtArr, m,1)
setIntElement(intElement(ArtArr, n,2), ArtArr, m,2)
setIntElement(intElement(ArtArr, n,3), ArtArr, m,3)
setIntElement(intElement(ArtArr, n,4), ArtArr, m,4)
setIntElement(temp1, ArtArr, n,1)
setIntElement(temp2, ArtArr, n,2)
setIntElement(temp3, ArtArr, n,3)
setIntElement(temp4, ArtArr, n,4)
}
If m + 1 = n Then return
k = (m + n) / 2
If intElement(ArtArr, m,3) > intElement(ArtArr, k,3) Then {
temp1 = intElement(ArtArr, m, 1)
temp2 = intElement(ArtArr, m, 2)
temp3 = intElement(ArtArr, m, 3)
temp4 = intElement(ArtArr, m, 4)
setIntElement(intElement(ArtArr, k,1), ArtArr, m,1)
setIntElement(intElement(ArtArr, k,2), ArtArr, m,2)
setIntElement(intElement(ArtArr, k,3), ArtArr, m,3)
setIntElement(intElement(ArtArr, k,4), ArtArr, m,4)
setIntElement(temp1, ArtArr, k,1)
setIntElement(temp2, ArtArr, k,2)
setIntElement(temp3, ArtArr, k,3)
setIntElement(temp4, ArtArr, k,4)
}
If intElement(ArtArr, k,3) > intElement(ArtArr, n,3) Then {
temp1 = intElement(ArtArr, k, 1)
temp2 = intElement(ArtArr, k, 2)
temp3 = intElement(ArtArr, k, 3)
temp4 = intElement(ArtArr, k, 4)
setIntElement(intElement(ArtArr, n,1), ArtArr, k,1)
setIntElement(intElement(ArtArr, n,2), ArtArr, k,2)
setIntElement(intElement(ArtArr, n,3), ArtArr, k,3)
setIntElement(intElement(ArtArr, n,4), ArtArr, k,4)
setIntElement(temp1, ArtArr, n,1)
setIntElement(temp2, ArtArr, n,2)
setIntElement(temp3, ArtArr, n,3)
setIntElement(temp4, ArtArr, n,4)
}
If m + 2 = n return
x = intElement(ArtArr, k,3)
i = m + 1
j = n - 1
While i <= j {
While i < n AND intElement(ArtArr, i,3) <= x
i = i + 1
While j > m AND intElement(ArtArr, j,3) >= x
j = j - 1
If i < j Then {
temp1 = intElement(ArtArr, i, 1)
temp2 = intElement(ArtArr, i, 2)
temp3 = intElement(ArtArr, i, 3)
temp4 = intElement(ArtArr, i, 4)
setIntElement(intElement(ArtArr, j,1), ArtArr, i,1)
setIntElement(intElement(ArtArr, j,2), ArtArr, i,2)
setIntElement(intElement(ArtArr, j,3), ArtArr, i,3)
setIntElement(intElement(ArtArr, j,4), ArtArr, i,4)
setIntElement(temp1, ArtArr, j,1)
setIntElement(temp2, ArtArr, j,2)
setIntElement(temp3, ArtArr, j,3)
setIntElement(temp4, ArtArr, j,4)
i = i + 1
j = j - 1
}
}
QuickSort(ArtArr, m, j)
QuickSort(ArtArr, i, n)
End Subroutine
Var ArtArr as array[15,4] of int
Var ArtnArr as array[15,4] of int
Var z as Int
Var u as Int
For z = 1 to 15
ArtnArr[z,1] = @XLookup("D:\daten\Sesame\data\lager.db", z, "ArtNr0", "ArtNr0")
ArtnArr[z,2] = @XLookup("D:\daten\Sesame\data\lager.db", z, "ArtNr0", "Testt")
ArtnArr[z,3] = @XLookup("D:\daten\Sesame\data\lager.db", z, "ArtNr0", "EanStk")
ArtnArr[z,4] = @XLookup("D:\daten\Sesame\data\lager.db", z, "ArtNr0", "PreisStk")
WriteLn(ArtnArr[z,1]+" "+ ArtnArr[z,2] +" "+ ArtnArr[z,3] +" "+ ArtnArr[z,4])
Next
ArtArr = ArtnArr
QuickSort(ArtArr, 1, 15)
For u = 1 to 15
WriteLn(ArtArr[u,1]+" "+ ArtArr[u,2] +" "+ ArtArr[u,3] +" "+ ArtArr[u,4])
Next