您的位置:首页 > 其它

scala merge_sort排序

2015-05-29 14:14 260 查看
1.merge的原理图





计算的过程



2.下面给出代码

def merge(intArray: Array[Int], p: Int, q: Int, r: Int): Unit = {
val n1 = q - p + 1
val n2 = r - q
val MAX =100

var leftArray = new Array[Int](n1 + 1)
var rightArray = new Array[Int](n2 + 1)

for (i <- 0 to n1 - 1) {
leftArray(i) = intArray(p + i - 1)
}

for (i <- 0 to n2 -1) {
rightArray(i) = intArray(q + i)

}

leftArray(n1) = MAX
rightArray(n2) = MAX

//    leftArray.foreach{  i => println(i) }
//    rightArray.foreach{  i => println(i) }

var l = 0
var ri = 0
for (k <- p - 1 to r - 1) {
if (leftArray(l) <= rightArray(ri)) {
intArray(k) = leftArray(l)
l += 1
}  else {
intArray(k) = rightArray(ri)
ri += 1
}
}

println("最后的排序结果")

intArray.foreach{  i => println(i) }
}

def mergeSort(intArray : Array[Int], p : Int, r : Int): Unit = {
if (p < r) {
val q = (p + r) / 2
mergeSort(intArray, p, q)
mergeSort(intArray, q + 1, r)
merge(intArray, p, q, r)
}
}


def main(args: Array[String]) = {

var intArray = Array(5,2,4,6,1,3,10,9,0)
mergeSort(intArray, 1 , 9)

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  merge 算法 scala