CodeOfScalaByExampleChap2

scala> def sort(xs: Array[Int]) { 
     |   def swap(i: Int, j: Int) { 
     |     val t = xs(i); xs(i) = xs(j); xs(j) = t 
     |   } 
     |   def sort1(l: Int, r: Int) { 
     |     val pivot = xs((l + r) / 2) 
     |     var i = l; var j = r 
     |     while (i <= j) { 
     |       while (xs(i) < pivot) i += 1 
     |       while (xs(j) > pivot) j -= 1 
     |       if (i <= j) { 
     |         swap(i, j) 
     |         i += 1 
     |         j -= 1 
     |       } 
     |     } 
     |     if (l < j) sort1(l, j) 
     |     if (j < r) sort1(i, r) 
     |   } 
     |   sort1(0, xs.length - 1) 
     | } 
sort: (Array[Int])Unit 

scala> var xs = Array(4,1,2,3,7,5) 
xs: Array[Int] = Array(4, 1, 2, 3, 7, 5) 

scala> sort(xs) 

scala> xs 
res4: Array[Int] = Array(1, 2, 3, 4, 5, 7) 

scala> 

下記、原文のコードは間違い。{ } が不足。

scala> def sort(xs: Array[Int]): Array[Int] = { 
     | if (xs.length <= 1) xs 
     |   else { 
     |     val pivot = xs(xs.length / 2) 
     |     Array.concat( 
     |       sort(xs filter (pivot >)), 
     |             xs filter (pivot ==), 
     |       sort(xs filter (pivot <))) 
     |   } 
     | 
     | } 
sort: (Array[Int])Array[Int] 

scala> var xs = Array(4,1,2,3,7,5) 
xs: Array[Int] = Array(4, 1, 2, 3, 7, 5) 
 
scala> sort(xs) 
res6: Array[Int] = Array(1, 2, 3, 4, 5, 7) 

scala> 

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2008年04月09日 22:13
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。