/ / स्काला: क्विकॉर्ट फॉर ए म्यूटेबलिस्ट [एरे [डबल]] - एरेज़, लिस्ट, स्काला, क्विकॉर्ट

Scala: एक MutableList के लिए Quicksort [ऐरे [डबल]] - सरणी, सूची, स्कैला, quicksort

मैं एक का उपयोग कर रहा हूँ MutableList[Array[Double]]जिसमें से प्रत्येक ऐरे पाँच डबल्स रखता है।

अब मैं एक एस्कॉर्ट लागू करना चाहता हूं, जो अपने ऐरे "एन-वें कॉलम" के अनुसार सूची को क्रमबद्ध करता है। मैंने रोसेटा के क्विकॉर्ट उदाहरण पर ध्यान दिया, और इस अनुकूलन के साथ आया:

def quicksortDataByIndex(index: Int, list: MutableList[Array[Double]]): MutableList[Array[Double]] = {
if(list.isEmpty){
list
} else {
val(smaller, bigger) = list partition (_(index) > list.head(index))
quicksortDataByIndex(index, smaller) += list.head ++= quicksortDataByIndex(index, bigger)
}
}
}

जो n-th तत्व पर एक ArrayIndexOutOfBounds अपवाद फेंकता है।

मुझे लगता है कि "_ (इंडेक्स)" लिखना गलत है, लेकिन मैं नहीं जानता कि क्यों, और यह कैसे अलग तरीके से किया जा सकता है। धन्यवाद!

उत्तर:

जवाब के लिए 0 № 1

यह वही है जो आप चाहते हैं, मैंने अभी जोड़ा है .tail विभाजन से पहले।

def quicksortDataByIndex(index: Int, list: MutableList[Array[Double]]) : MutableList[Array[Double]] = {
if(list.isEmpty){
list
} else {
val (smaller, bigger) = list.tail partition (a => a(index) < list.head(index))
quicksortDataByIndex(index, smaller) += list.head ++= quicksortDataByIndex(index, bigger)
}
}

आउटपुट:

quicksortDataByIndex(1, MutableList(Array(0, 3), Array(1, 2), Array(0, 7)))
// MutableList(Array(1.0, 2.0), Array(0.0, 3.0), Array(0.0, 7.0))