Hi,
bisschen funktional programmieren versucht, und es hieß ja "Scala optimiert den Code"
Naja, das folgende Programm scheint davon nicht betroffen zu sein:
1. Ist das alles funktional? (Kann ja sein, dass ich was übersehen hab!)
2. Sobald die Liste größer als 10 Elemente hat, dauert das Sortieren weit über 10 Sekunden, was wohl kein gewünschtes Ergebnis ist. Woran liegt das?
Und mal so nebenbei:
Was ist der grundlegende Unterschied zwischen
und
? Also ich verstehe den Sinn nicht ganz!
Danke für die Hilfe,
liebe Grüße!
bisschen funktional programmieren versucht, und es hieß ja "Scala optimiert den Code"
Naja, das folgende Programm scheint davon nicht betroffen zu sein:
Java:
object MergeSort {
def divide: List[Int] => (List[Int], List[Int]) = {
xs => ( xs take ( xs.length / 2 ), xs drop ( xs.length / 2 ) )
}
def conquer: ( (List[Int], List[Int]) ) => (List[Int], List[Int]) = {
xt => ( mergeSort( xt._1 ), mergeSort( xt._2 ) )
}
def merge: ( (List[Int], List[Int]) ) => List[Int] = {
xt => xt._1.foldLeft( xt._2 ) {
case (Nil, x) => x::Nil
case (f::fs, x) => if( x < f ) x::f::fs else f::merge( fs, x::Nil )
}
}
def mergeSort: List[Int] => List[Int] = {
case xs if ( xs.length < 2 ) => xs
case xs => merge( conquer( divide( xs ) ) )
}
}
1. Ist das alles funktional? (Kann ja sein, dass ich was übersehen hab!)
2. Sobald die Liste größer als 10 Elemente hat, dauert das Sortieren weit über 10 Sekunden, was wohl kein gewünschtes Ergebnis ist. Woran liegt das?
Und mal so nebenbei:
Was ist der grundlegende Unterschied zwischen
Code:
def square(x: Int) = x * x
Code:
def square: Int => Int = x => x * x
Danke für die Hilfe,
liebe Grüße!