Scala练习-归并排序
2017-06-27 21:08
357 查看
源码
归并排序
归并排序
package day14 import scala.collection.mutable.ArrayBuffer /** * Created by doctorq on 2017/6/26. * 归并排序 */ object MergeSort extends App { /** * 2个有序数组合并,O(n)时间复杂度 * * @param left * @param right * @return */ def mergeArray(left: ArrayBuffer[Int], right: ArrayBuffer[Int]): ArrayBuffer[Int] = { val sortedArray = new ArrayBuffer[Int]() while (left.size != 0 && right.size != 0) { val leftItem = left.head val rightItem = right.head if (leftItem < rightItem) { sortedArray.append(leftItem) left.remove(0) } else { sortedArray.append(rightItem) right.remove(0) } } if (left.size != 0) { sortedArray.appendAll(left) } else if (right.size != 0) { sortedArray.appendAll(right) } sortedArray } def mergeSort(list: ArrayBuffer[Int]): ArrayBuffer[Int] = { if (list.size <= 1) return list var left = ArrayBuffer[Int]() var right = ArrayBuffer[Int]() val size = list.size for (i <- 0 until size) { if (i < size / 2) { left.append(list(i)) } else { right.append(list(i)) } } left = mergeSort(left) right = mergeSort(right) mergeArray(left, right) } def printlnList(sortedHeap: ArrayBuffer[Int]): Unit = { sortedHeap.foreach(item => print(s"$item ")) println("sorted!") } val list = ArrayBuffer(15, 4, 3, 23, 5, 6, 7, 34, 6, 7, 3, 5, 7, 8, 3, 4, 6, 8, 3, 5, 7) val sortedList = mergeSort(list) printlnList(sortedList) }
相关文章推荐
- Scala学习(五)练习
- Scala练习(六)
- Scala练习(十四)
- 小白算法练习 归并排序 POJ Brainman lanqiao
- Scala练习八继承
- Scala练习-堆排序
- SCALA常规练习A
- spark 官方动手练习一:Introduction to the Scala Shell
- 练习《算法导论》之排序:插入排序,归并排序,堆排序,快速排序
- Scala练习(八)
- 归并排序的一个练习
- Scala练习(十五)
- Scala练习九文件和正则表达式
- Scala学习(七)练习
- 笨办法学 Python · 续 练习 16:冒泡、快速和归并排序
- Scala练习(七)
- Hark的数据结构与算法练习之归并排序
- Scala练习-快速排序
- Scala for the Impatient课后练习(第1章 The Basics)
- Functional Programming in Scala第三章练习