cecell icon

Untitled

cecell | PRO | 11/09/21 03:30:43 AM UTC (Edited) | 0 ⭐ | 224 👁️ | Never ⏰ | []
text |

3.35 KB

|

None

|

0 👍

/

0 👎

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

Comments