Quick actions

cmd+k|ctrl+k

Navigation

Languages

QuickSort My version

Snippet info

Language

Scala

Visibility

public

Author

devernul

Created

2018-12-09T06:39:56Z

Updated

2018-12-09T07:01:48Z

object Main extends App {
  def quickSort (array: Array[Int], left: Int = 0, right: Int): Array[Int] = {
    if (array.length < 2){
      return array
    } else if (array.length == 2) {
      if(array(left) > array(right)){
        val temp = array(left)
        array(left) = array(right)
        array(right) = temp
      }
    }
    val pivotPosition = sortOnPivot(array, left, right)
    val (leftAr,rightAr) = (array.slice(0, pivotPosition), array.slice(pivotPosition, array.length))
    quickSort(leftAr, 0, leftAr.length-1) ++ quickSort(rightAr, 0, rightAr.length-1)
  }

  def sortOnPivot(array: Array[Int], left:Int, pivot: Int):  Int = {
      var pivotPosition = pivot
      for (n <- left until array.length) {
        if (array(n) > array(pivot)) {
          //slice to left
          var temp = array(pivot-1)
          array(pivot-1) = array(pivot)
          array(pivot) = temp
          //exchange
          temp = array(n)
          pivotPosition = n
          array(n) = array(pivot)
          array(pivot) = temp
        }
      }
      pivotPosition
  }
  val l = Array(1,4,3,7,5,8,6,20,3,1,0,22)
  println(quickSort(l, 0, l.length-1).toList)
}
INFO