`

Scala编程之归并排序

 
阅读更多

       在排序算法中,归并排序比插入排序的效率更高,下面通过Scala语言实现归并排序。

/**
  * Created by user on 2016/1/22.
  */
object MergeSort {
   def mergeSort[T](less: (T, T) => Boolean)(xs: List[T]): List[T] = {
     def merge(xs: List[T], ys: List[T]): List[T] = (xs, ys) match {
       case (Nil, _) => ys
       case (_, Nil) => xs
       case (x :: xs1, y :: ys1) =>
         if (less(x, y)) x :: merge(xs1,ys)
         else y :: merge(xs,ys1)
     }

     val n  = xs.length / 2
     if(n == 0) xs
     else{
        val (ys, zs) = xs.splitAt(n)
        merge(mergeSort(less)(ys),mergeSort(less)(zs))
     }
   }

   def main(args: Array[String]) {
      val flag = (x: Int, y:Int) => x < y
      val num = List(2, 1, 4, 3, 5, 7, 0)
      println("Merge Sort: " + mergeSort(flag)(num))
   }
}

 测试结果如下所示:

       Merge Sort: List(0, 1, 2, 3, 4, 5, 7)

分享到:
评论

相关推荐

    Scala 高级编程及实例

    - **示例:归并排序**:通过一个具体的排序算法来演示列表的操作。 - **列表类II:高阶方法**:深入讨论了高阶函数在列表处理中的应用。 - **总结**:对列表操作进行了归纳总结。 #### 十、for推导式 - **N皇后问题...

    最全programming in scala

    6. **列表操作**:Scala的列表是一种不可变的数据结构,书中通过实例展示了如何使用列表及其高阶函数(如map、filter、fold等)来处理数据,如实现归并排序算法。 7. **可变状态**:尽管Scala推崇不可变性,但书中...

    scala-sorts:scala中的排序算法

    这些内置方法基于快速排序和归并排序,具有很好的性能。 在 `scala-sorts` 项目中,我们可以期待看到以下常见的排序算法实现: 1. **冒泡排序(Bubble Sort)**:通过重复遍历数组,交换相邻的元素来实现排序。...

    Scala数据结构和算法.docx

    9. **算法实现**:Scala可以实现各种经典算法,如排序(快速排序、归并排序)、查找(二分查找)、图算法(深度优先搜索、广度优先搜索)等。 10. **泛型**:Scala的泛型系统允许创建类型安全的通用代码,能够处理...

    Data Structures and Algorithms with Scala

    常见算法包括排序(如冒泡排序、选择排序、快速排序、归并排序等)、搜索(如线性搜索、二分搜索)、图算法(如深度优先搜索、广度优先搜索)、动态规划等。掌握算法能帮助我们编写更高效、更优雅的代码。 本书可能...

    scala程序员面试算法宝典代码

    - 冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序:这些是常见的排序算法,理解它们的原理和性能至关重要。 - 二分查找:在已排序的数组中查找特定元素,具有O(log n)的时间复杂度。 - 哈希查找:...

    Algorithm-algorithms-scala.zip

    在"algorithms-scala-master"中,可能包含排序算法(如快速排序、归并排序、冒泡排序)、搜索算法(如线性搜索、二分搜索)、图算法(如Dijkstra最短路径算法、Floyd-Warshall算法)、动态规划问题的解决方案、字符...

    手写程序(scala).docx

    归并排序算法在Scala中的实现 归并排序是一种高效的、基于比较的排序算法,采用分治法的策略来实现。它将数组分成两个相等的部分,对每部分递归地进行排序,然后将结果合并成一个整体。 #### Scala实现示例代码...

    scala-algorithms:为了(重新)学习,练习经典排序算法的实现

    通过参与"scala-algorithms"项目,不仅可以深入学习Scala编程,还能巩固数据结构和算法基础,这对于任何IT专业人员来说都是非常宝贵的经验。不断地实践和学习,将使你对编程有更深入的理解,为解决实际问题打下坚实...

    Go 语言编程

    标题:“Go 语言编程”和描述中提到的是Scala语言,这两者实际上分别指向不同的编程语言,这里容易产生混淆。Scala是一种现代的多范式编程语言,设计初衷是要集成面向对象编程和函数式编程的特性。Scala运行在Java...

    Algorithm-scalacaster.zip

    例如,快速排序、归并排序等经典排序算法,都可以用Scala的函数式风格来实现。 数据结构是存储和组织数据的方式,是算法的基础。Scala提供了一些内置的数据结构,如列表(List)、数组(Array)、链表(LinkedList...

    编程题类别+样题.rar

    3. **算法**:算法是解决问题的步骤,如排序算法(冒泡排序、选择排序、插入排序、快速排序、归并排序等)、查找算法(线性查找、二分查找)、图算法(深度优先搜索、广度优先搜索)等。 4. **面向对象编程**:对于...

    ScalaByExample.pdf

    - **归并排序示例**: 使用列表实现经典的归并排序算法。 7. **For-Comprehensions**: - **N皇后问题**: 通过for-comprehension展示如何解决经典的N皇后问题。 - **查询与for-comprehensions**: 使用for-...

    Algorithm-scalgos.zip

    1. 排序算法:如快速排序(QuickSort)、归并排序(MergeSort)和堆排序(HeapSort)。这些排序算法在Scala中可以通过函数式编程的方式实现,例如使用`foldLeft`或`foldRight`来构建排序过程。 2. 查找算法:包括...

    Algorithm-algorithm.zip

    在"algorithm-master"这个子文件夹中,我们可能找到了各种算法的实现代码,包括但不限于经典的排序算法(如快速排序、归并排序)、查找算法(二分查找、哈希查找)、图算法(Dijkstra最短路径算法、Floyd-Warshall全...

    Sorting-Assignment

    本话题将深入探讨一个名为"Sorting-Assignment"的项目,该项目可能是一个用Scala编程语言实现的排序算法练习或教学资源。Scala是一种强类型、面向对象并具有函数式编程特性的现代编程语言,它被广泛用于构建高性能、...

    最新大数据技术之高频面试题.docx

    在这里,我们将对冒泡排序、二分查找、快排、归并、二叉树之 Scala 实现等几个常见的编程题进行总结和分析。 冒泡排序是一种简单的排序算法。该算法的时间复杂度为 O(n^2),空间复杂度为 O(1)。冒泡排序的实现思路...

    Algorithm-DataStructure.zip

    在这个名为"Algorithm-DataStructure.zip"的压缩包中,我们可以预见到一系列关于Java、Python和Scala编程语言的数据结构和算法实现。这三个语言都是现代软件开发中广泛应用的编程工具,各有其特点和优势。 首先,让...

    DSA:该存储库包含有关Scala中与数据结构和算法有关的问题的代码示例

    描述简单明了,重申了标题中的信息,即这个存储库提供了Scala编程语言中的数据结构和算法问题的代码实例。这意味着用户可以通过查看和运行这些代码来学习和理解如何在实际场景中应用这些基础但重要的计算机科学概念...

    Algorithm-Purity-Project.zip

    2. **经典算法**:可能包含了排序(如快速排序、归并排序)、搜索(如二分查找)、图算法(如Dijkstra最短路径、Floyd-Warshall所有对最短路径)以及其他数据结构算法(如堆、栈、队列的操作)。这些算法的纯函数式...

Global site tag (gtag.js) - Google Analytics