Scala函数式编程

简介: Scala函数式编程

第1关:冒泡排序


任务描述

   本关任务:本关主题是利用Scala基础实现对冒泡排序算法的改进。使用冒泡算法存在这样一种情况:在第j(j<n-1)趟时就已排好序,但算法仍然执行后面几趟的比较。实际上,一旦算法中某一趟比较时没有任何元素交换,说明已经排好序了,就可以结束算法。现有9个随机数:[49,38,65,97,76,13,27,49,78]

   请改进冒泡排序算法,避免序列在已经排好的情况下继续进行冒泡的操作。


相关知识

   为了完成本关任务,你需要掌握:如何使用scala语言进行冒泡排序。


冒泡排序

   冒泡排序也称为气泡排序,是一种典型的交换排序方法。冒泡排序算法的原理如下:

1、比较相邻的元素。如果第一个比第二个大,就相互交换。

2、对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。最后的元素应该会是最大的数。

3、针对所有的元素重复以上的步骤,除了最后一个。

4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。


Scala版冒泡排序

object BubbleSort {
def main(args: Array[String]): Unit = {
val sortArray=Array(49,38,65,97,76,13,27,49,78)
// 循环完成一次外循环后 就会得到 一次最大值 ,最大值将不再参与排序
for( j <- 0 until( sortArray.length -1)){
for(i<- 0 until sortArray.length - 1 -j ){// 对每个外循环和进行多次内循环
if(sortArray(i) > sortArray(i+1)){
val temp = sortArray(i)
sortArray(i) = sortArray(i+1)
sortArray(i+1) = temp
}
}
}
sortArray.foreach(x=> print(x + " "))
println()
}
}


输出:13 27 38 49 49 65 76 78 97


编程要求


   改进冒泡排序算法,避免序列在已经排好的情况下继续进行冒泡的操作。使得程序运行结果如预期输出。具体请参见后续测试样例。

####测试说明


平台会对你编写的代码进行测试:


测试输入:49,38,65,97,76,13,27,49,78;

预期输出:13 27 38 49 49 65 76 78 97


开始你的任务吧,祝你成功!

import  scala.util.control.Breaks._
object BubbleSort {
      def main(args: Array[String]): Unit = {
          val sortArray = Array(49,38,65,97,76,13,27,49,78)
          var exchange = true
          //**************Begin************************* 
           for( j <- 0 until( sortArray.length -1)){  
              for(i<- 0 until sortArray.length - 1 -j ){
                  if(sortArray(i) > sortArray(i+1)){
                       val temp = sortArray(i)
                       sortArray(i) = sortArray(i+1)
                       sortArray(i+1) = temp
                  }     
              }
          }
          //**************End**************************
        sortArray.foreach(x=> print(x + " "))
    }   
}
目录
相关文章
|
6月前
|
消息中间件 分布式计算 Java
Scala函数式编程【从基础到高级】
Scala函数式编程【从基础到高级】
|
4月前
|
存储 监控 BI
上网行为管理软件中的Scala函数式编程
**使用Scala进行上网行为管理**\n本文探讨了如何利用Scala的函数式编程特性来监控和管理上网行为。示例中,定义了`WebActivity`案例类来存储数据,通过集合操作如`filter`, `map`和`foldLeft`处理数据,统计用户访问次数和活动。此外,还展示了如何使用HTTP库自动提交数据到网站。Scala的这种方法提高了数据处理效率,确保一致性和安全性。
52 0
|
6月前
|
人工智能 安全 人机交互
Scala 05 —— 函数式编程底层逻辑
Scala讲座探讨了函数式编程的底层逻辑,强调无副作用和确定性。函数式编程的核心是纯函数,避免读写数据等副作用,将其移至代码边缘处理。函数输入输出应清晰定义,避免模糊参数。函数视为数据范畴间的映射,以范畴论为基础。业务逻辑转化为纯函数式,通过声明式编程实现解耦,关注输入输出而非过程,便于验证和自动编程。将业务逻辑视作流水线,每个函数处理数据,避免全局变量和`var`,优先确保正确性再优化效率。
49 1
Scala 05 —— 函数式编程底层逻辑
|
6月前
|
消息中间件 分布式计算 大数据
Scala学习--day03--函数式编程
Scala学习--day03--函数式编程
101 2
|
6月前
|
数据采集 监控 安全
通过Scala实现局域网监控上网记录分析:函数式编程的优雅之路
在当今数字时代,网络监控成为保障信息安全的必要手段之一。本文将介绍如何使用Scala编程语言实现局域网监控上网记录分析的功能,重点探讨函数式编程的优雅之路。通过一系列代码示例,我们将展示如何利用Scala的函数式特性和强大的语法来实现高效的监控和分析系统。
251 1
|
Scala
Scala函数式编程实战(下)
Scala函数式编程实战(下)
324 0
|
分布式计算 API Scala
Scala函数式编程
Scala函数式编程
68 0
|
分布式计算 Ubuntu Java
|
大数据 编译器 Scala
大数据开发基础的编程语言的Scala的函数式编程范式
Scala是一种支持函数式编程范式的编程语言,它允许开发者使用函数和不可变数据结构来实现程序逻辑。本文将介绍Scala中函数式编程范式的概念和用法,帮助开发者更好地理解和应用这门语言。
108 0
|
分布式计算 Shell API
scala函数式编程与高阶函数
谈到编程方式有指令式编程、过程化编程、函数式编程,函数式编程在使用时主要的思想就是把运算过程写成一些列嵌套的函数调用。把一组数据通过函数实现运算转化成另一组数据。函数式编程这种方式在我们将来开发Spark、Flink的业务代码时会大量使用。下面列出了一些我们经常使用的进行函数式编程的Iterable trait(可迭代特质)方法。
87 0