`
徐风子
  • 浏览: 37435 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于scala 的list 排序问题

阅读更多
刚才试验了一下,发现scala中 List排序不是稳定排序。

scala> val l = List(1, 2, 3, 4, 5, 6, 7, 8 )
l: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8 )

scala> l sort ((s, t) => s%2 > t%2)
res0: List[Int] = List(7, 3, 5, 1, 8, 4, 6, 2)


怎么会这样呢?难道稳定排序不重要吗?
分享到:
评论
2 楼 徐风子 2009-09-14  
汗!估计是上学的时候数据结构没学好,还以为最优的排序一般都是稳定排序不稳定排序只是特例呢。
1 楼 icefishc 2009-09-02  
重要啊 所以很多语言都会再给一个stable_sort来保证稳定排序。
至于sort效率为主 不需要再保证稳定。

相关推荐

    Scala的List类方法整合

    ### Scala的List类方法整合 在Scala编程语言中,`List` 类是处理有序集合的一种常见方式。本文将详细介绍 `List` 类中的多种方法及其用途,帮助开发者更好地理解和使用这些功能。 #### 1. `def + (elem: A): List...

    Scala实现冒泡排序、归并排序和快速排序的示例代码

    Scala实现冒泡排序、归并排序和快速排序的示例代码 本文主要介绍了Scala实现冒泡排序、归并排序和快速排序的示例代码,这些示例代码可以帮助读者更好地理解这些排序算法的实现细节。 冒泡排序是一种简单的排序算法...

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

    在Scala中,可以使用List或LinkedList实现链表操作。 - 栈和队列:栈遵循后进先出(LIFO)原则,队列则是先进先出(FIFO)原则。scala.util.Stack和scala.collection.mutable.Queue可分别用于实现栈和队列。 - 树...

    Scala数据结构和算法.docx

    6. **递归**:Scala支持函数式编程中的递归,可以在处理树形结构、排序等问题时发挥作用。 7. **尾递归优化**:Scala支持尾递归优化,这使得无限递归或深度递归成为可能,而不会导致堆栈溢出。 8. **并行和并发**...

    Scala常用List列表操作方法示例

    本文将详细介绍Scala常用List列表操作方法示例,包括创建列表、获取列表元素、修改列表元素、判断列表元素、列表排序、列表过滤等多种操作。 创建列表 在Scala中,可以使用多种方式创建列表,例如使用`List`对象的...

    scala版DVD管理系统

    2. **集合框架**:Scala提供了丰富的集合API,可能用到了`List`、`Set`或`Map`来存储DVD数据。例如,`DVD`对象可能存储在一个`Map`中,以方便通过标题或ID快速查找。 3. **模式匹配**:在处理DVD的各种操作时,可能...

    Scala学习笔记(全)

    - **数组**:定义数组并进行操作,如排序、求最大最小值等。 - **映射(Map)**:存储键值对,支持增删改查操作。 - **元组(Tuple)**:一组有序的数据集合,每个位置的数据类型可以不同。 - **集合**:包括List、Set等...

    手写程序(scala).docx

    - **main函数**: 定义了一个整数列表 `list` 并调用 `quickSort` 函数对其进行排序,同时记录了排序前后的系统时间以计算排序耗时。 - **quickSort函数**: 使用模式匹配实现递归。如果列表为空则返回空列表;否则...

    Algorithm-algorithms-scala.zip

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

    Scala 计算算子

    解决这个问题的方法是为`User`类创建一个自定义的`Ordering`,如按照工资(salary)降序排列,这样就可以成功地对`users`数组进行排序。 除了`sorted`,还有其他的排序方法,如`sortBy`。这个方法接受一个函数作为...

    在Scala和Ruby中实现的稳定婚姻问题变体_Ruby_Scala_源码_下载.zip

    在这个问题中,每个个体(男性或女性)都有一个偏好列表,表示他们对所有异性按照喜好的顺序进行排序。目标是找到一个稳定匹配,即不存在一对男女,他们都更喜欢彼此而不是他们当前的匹配对象。 Gale-Shapley算法是...

    Big Data Frameworks Scala and Spark Tutorial

    下面是一个简单的Scala示例,演示如何使用Scala处理文本文件中的单词计数问题: ```scala val lines = scala.io.Source.fromFile("textfile.txt").getLines.toList val words = lines.flatMap(line => line.split(...

    scala relation bao

    在Scala中,处理关系数据通常涉及到使用集合库,例如`Seq`, `List`, `Map`等,这些集合提供了丰富的操作方法,允许我们对数据进行查询、过滤、排序和转换。同时,Scala也支持模式匹配,这在处理结构化数据时非常有用...

    Scala的集合算子

    Scala集合提供了丰富的计算算⼦,⽤于实现集合/数组的计算,这些计算⼦⼀般针对于List、Array、Set、Map、Range、Vector、Iterator等都可以适⽤。 排序 ① sorted scala> var a = Array(1,3,4,2,5) a: Array[Int] = ...

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

    Scala的递归特性很适合实现这种算法,同时`ArrayBuffer`或`List`可以用来辅助合并操作。 6. 堆排序(Heap Sort) 堆排序使用堆数据结构进行排序。Scala中,可以构建一个最大堆或最小堆,然后反复调整堆顶元素,...

    Spark 编程基础(Scala 版)-机房上机实验指南

    - **数据类型**:Scala支持丰富的数据类型,包括基本类型(如Int、Double等)和复合类型(如List、Array等)。 - **控制结构**:提供if-else语句、for循环等基本控制结构。 - **函数式编程**:支持高阶函数、模式...

    Spark处理数据排序问题如何避免OOM

    在Spark处理大数据时,排序操作是一项常见的任务,但如果不谨慎处理,可能会引发内存溢出(Out Of Memory, OOM)的问题。特别是在处理大规模数据时,直接将`Iterable`转换为`List`并进行排序,可能导致内存无法承受...

    scala-samples:有一些scala代码可以解释Scala语法和相关内容-例如您可以使用所有这些方法

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性。这个名为"scala-samples"的项目提供了丰富的...同时,这个项目也是学习Scala与Spark集成、Scala.js前端开发,以及应用算法解决问题的好资源。

Global site tag (gtag.js) - Google Analytics