, Java-, , , Scala .
, , length
String
. (21 ), isDefinedAt()
, String
.
, , .
, HackerRank, Scala main()
(.. !). sortum()
.
def sortum(arr:Array[String],start:Int = 0, end:Int = 1000000):Array[String] =
if (arr.length < 2) arr
else if (end-start < 1) arr.sorted
else {
val mid = (end-start)/2 + start
val (a,b) = arr.partition(_.isDefinedAt(mid))
if (a.isEmpty) sortum(b,start,mid)
else if (b.isEmpty) sortum(a,mid+1,end)
else sortum(b,start,mid) ++ sortum(a,mid+1,end)
}
def main(args: Array[String]) {
val sc = new java.util.Scanner (System.in);
var n = sc.nextInt();
var unsorted = new Array[String](n);
for(unsorted_i <- 0 to n-1) {
unsorted(unsorted_i) = sc.next();
}
sortum(unsorted).foreach(println)
}
, .
, , , .length
, .
unsorted.map(_.length)
.zipWithIndex
.sortWith{case ((al,ax),(bl,bx)) =>
al < bl || (al == bl && unsorted(ax) < unsorted(bx))
}.foreach(x => println(unsorted(x._2)))