バブルソート

30分プログラム、その506。
バブルソートってどう書くのー」って聞かれて、こう書くんだよーっとさらさらっと書いてやろうとしたら、普通に解らなかったので非常にあせった。
そういえば、クイックソートとかマージソートはたまに書くけど、バブルソートはめったに書いたことないなぁ。
というわけで、ちゃんと調べて、Scalaで書いてみた。

使い方

scala> bsort(Array(1,5,3))
res1: Array[Int] = Array(1, 3, 5)

ソースコード

def swap[A](xs : Array[A], i : Int, j : Int){
  val s = xs(i)
  val t = xs(j);
  xs.update(i,t)
  xs.update(j,s)
}

def bsort[A <% Ordered[A]](xs : Array[A]) : Array[A] =
{
  val n = xs size

  for(i <- 0 to n - 1){
    for(j <- 0 to n - i - 2){
      if(xs(j) > xs(j+1))
	swap(xs,j,j+1)
    }
  }
  xs
}