Scriptname TestSorts Hidden function StartSortFunctionInt() Int[] aIntArray = New Int[13] aIntArray[0] = 10 aIntArray[1] = 11 aIntArray[2] = -1 aIntArray[3] = 0 aIntArray[4] = 8 aIntArray[5] = 1 aIntArray[6] = 50 aIntArray[7] = 8 aIntArray[8] = 50 aIntArray[9] = 10 aIntArray[10] = 0 aIntArray[11] = 44 aIntArray[12] = 999 Debug.Trace("aIntArray as String Before: " + aIntArray as String) cArrayQuickSortInt(aIntArray) ; works just fine Debug.Trace("aIntArray as String After: " + aIntArray as String) endfunction ; works great function cArrayQuickSortInt(Int[] aArray, Int low = -1, Int high = -1) global if high == -1 high = aArray.length - 1 endif if low == -1 low = 0 endif if low < high ; pi is partitioning index, after this aArray[pivot] now at right place Int pi = cArrayPartitionInt(aArray, low, high) ; Separately sort elements before partition and after partition cArrayQuickSortInt(aArray, low, pi - 1) cArrayQuickSortInt(aArray, pi + 1, high) endif endfunction Int function cArrayPartitionInt(Int[] aArray, Int low, Int high) global Int pivot = aArray[high] Int i = low - 1 ; Index of smaller element and indicates the right position of pivot found so far Int j = low while j <= (high - 1) if aArray[j] < pivot i += 1 aArraySwapIndexInt(aArray, i, j) endif j += 1 endwhile aArraySwapIndexInt(aArray, i + 1, high) return (i + 1) endfunction function StartSortFunctionString() String[] cArray = New String[14] cArray[0] = "" cArray[1] = "ppp" cArray[2] = "" cArray[3] = "rrr" cArray[4] = "" cArray[5] = "qqq" cArray[6] = "" cArray[7] = "ttt" cArray[8] = "" cArray[9] = "aaa" cArray[10] = "" cArray[11] = "bcb" cArray[12] = "bcb" cArray[13] = "zzz" Debug.Trace("cArray as String Before: " + cArray as String) cArrayQuickSortString(cArray) ; never makes it past here Debug.Trace("cArray as String After: " + cArray as String) endfunction ; doesn't work! function cArrayQuickSortString(String[] aArray, Int low = -1, Int high = -1) global if high == -1 high = aArray.length - 1 endif if low == -1 low = 0 endif if low < high ; pi is partitioning index, after this aArray[pivot] now at right place Int pi = cArrayPartitionString(aArray, low, high) ; Separately sort elements before partition and after partition cArrayQuickSortString(aArray, low, pi - 1) cArrayQuickSortString(aArray, pi + 1, high) endif endfunction Int function cArrayPartitionString(String[] aArray, Int low, Int high) global String pivot = aArray[high] Int i = low - 1 ; Index of smaller element and indicates the right position of pivot found so far Int j = low while j <= (high - 1) if aArray[j] < pivot i += 1 aArraySwapIndexString(aArray, i, j) endif j += 1 endwhile aArraySwapIndexString(aArray, i + 1, high) return (i + 1) endfunction function aArraySwapIndexInt(Int[] aArray, Int index1, Int index2) global Int tempValue = aArray[index1] aArray[index1] = aArray[index2] aArray[index2] = tempValue endfunction function aArraySwapIndexString(String[] aArray, Int index1, Int index2) global String tempValue = aArray[index1] aArray[index1] = aArray[index2] aArray[index2] = tempValue endfunction