scala 快速排序与合并排序
2017-01-20 15:59
246 查看
def sort(L: List[Int]): List[Int] = L match { case Nil => Nil case base::tail => val (left, right) = tail.partition(_ < base) sort(left):::base::sort(right) } sort(List(3, 6, 1, 0, -1)).foreach(println) def sort(A: Array[Int]) { if(A.length > 1){ val p = A.take(A.length/2) val q = A.takeRight(A.length - A.length/2) sort(p); sort(q) var i = 0; var j = 0 while(i < p.length && j < q.length){ if (p(i) < q(j)) {A(i+j) = p(i); i += 1} else {A(i+j) = q(j); j += 1} } while(i < p.length) {A(i+j) = p(i); i += 1} while(j < q.length) {A(i+j) = q(j); j += 1} } } val A = Array[Int](4, 1, 6, 7, 0, 2) sort(A) println(A.mkString(", "))
相关文章推荐
- 对合并排序和快速排序的一点思考
- [Algorithms] 分治算法(二分查找, 合并排序, 插入排序, 快速排序(coming))
- 插入排序、合并排序、堆排序和快速排序
- 基于分治策略的排序算法:合并排序和快速排序
- 快速排序、合并排序、基数排序时间复杂度
- 算法分析与设计实验 分治策略 两路合并排序和快速排序
- 分治法中的合并排序和快速排序
- 算法(分治)合并排序和快速排序
- 分治思想:合并排序和快速排序
- 快速排序和合并排序的比较(时间和比较步数)
- 二分搜索,合并排序及快速排序
- 递归与分治-合并排序、快速排序以及循环赛问题
- 快速排序与合并排序时间比较(适合初学者)
- 算法有插入排序,堆排序,合并排序,快速排序和stooge排序
- scala数据结构和算法-01-用scala实现合并排序
- 【排序】洛谷 P1177 【模板】快速排序
- 剑指Offer——(16)合并两个排序的链表
- lintcode -合并k个排序链表
- php关联数组排序(快速排序)
- 合并两个排序的链表