2016-05-03 8 views
0

私はスカラを初めて使い、選択ソートアルゴリズムを試していました。私は最小の並べ替えを行うことができましたが、私が最大の並べ替えをしようとすると、並べ替えられた配列が降順で取得します。私のコードは次のとおりです。選択範囲をスカラーで並べ替え

def maxSort(a:Array[Double]):Unit = { 
    for(i <- 0 until a.length-1){ 
      var min = i 
        for(j <- i + 1 until a.length){ 
          if (a(j) < a(min)) min = j 
      } 
    val tmp = a(i) 
    a(i) = a(min) 
    a(min) = tmp 
    } 
} 

私は、配列の終わりに私の結果を追加する必要があることを知っているが、私はそれをどのように行うのですか?

答えて

2

このコードは、昇順で最大値を使用して配列をソートします:

def maxSort(a:Array[Double]):Unit = { 
    for (i <- (0 until a.length).reverse) { 
    var max = i 
    for (j <- (0 until i).reverse) { 
     if (a(j) > a(max)) max = j 
    } 
    val tmp = a(i) 
    a(i) = a(max) 
    a(max) = tmp 
    } 
} 

ここでの主な問題は、逆の順序で配列を反復され、より多くのソリューションは、ここで提供される: Scala downwards or decreasing for loop?

Scalaはそれが機能的な機能であることを称賛し、機能的なアプローチはもっと興味深く、「言語のスタイルで」かもしれないことに注意してください。その答えと参照用

Selection sort in functional Scala

+0

ありがとう:ここで選択ソートの例をいくつか示します。 – StarLord

関連する問題