It seems like a missing feature of Scala, "a method to convert a tuple to a list", but you can use productIterator to get there...sort of. ProductIterator returns a List[Any] so it's rather ugly but you could do something like:
val list = List(1, 0, 1, 2, 3, 1, 2, 0, 1, 2, 0, 3, 2, 0, 1)
list
.sortBy(-_)
.partition( _ == 1 )
.productIterator.map( _.asInstanceOf[List[Int]] )
.toList.flatten
// Results in: List(1, 1, 1, 1, 1, 3, 3, 2, 2, 2, 2, 0, 0, 0, 0)
Just for a display of virtuosity you could also arrive at the same answer with
list.sortBy(-_).foldLeft(List[Int]()){case (a,1) => 1 +: a case (a,v) => a :+ v}
or:
list.sortBy(-_).sortWith((a,b) => a == 1)