李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
大数据
正文
Scala练习(一)
Leefs
2021-04-19 PM
1982℃
0条
# Scala练习(一) ### 前言 学习程序重要的是学习其中的思想 ### 一、scala实现快速排序 **快速排序介绍** 思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 **1.1 一次快速排序** ![16.Scala练习01.gif](https://lilinchao.com/usr/uploads/2021/04/1246619972.gif) **分析** 快速排序使用的二分的思想 > + 首先选择一个基准,定义左右两端指针,先从左到右进行扫描直到,R[hi] < temp,将R[hi]移动至lo所在位置 > + 从右往左进行扫描,直到R[lo] > temp,将R[lo]移动到hi所在位置上 > + 左右端指针在排序过程中从数组的两端往中间进行靠近,直到hi == lo。 **1.2 完整快速排序** ![16.Scala练习02.png](https://lilinchao.com/usr/uploads/2021/04/1044013120.png) **描述** > 对(2,10,8,22,34,5,12,28,21,11)通过快排进行排序 **代码** ```scala object Scala_Quick_Sort02 { def main(args: Array[String]): Unit = { println(quickSort(List(2,10,8,22,34,5,12,28,21,11))) } def quickSort(a:List[Int]):List[Int] = { /* 以集合第一个元素来对集合进行分割 println(a.filter(_
a.head)):所有大于a.head的元素构成一个集合 进行递归调用后再将结果连接起来输出 */ //++ 该方法用于连接两个集合 //::: 该方法只能用于连接两个List类型的集合 //if(a.length < 2) a else quickSort(a.filter(_
a.head)) if(a.length < 2) a else quickSort(a.filter(_
a.head)) } } ``` ### 二、Scala实现冒泡排序 **冒泡排序介绍** 通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水底下的气泡一样逐渐向上冒。 **2.1 冒泡排序过程** ![16.Scala练习03.png](https://lilinchao.com/usr/uploads/2021/04/1782168306.png) **冒泡排序规则** (1)一共进行数组的大小-1次大的循环 (2)每一趟排序的次数在逐渐的减少 **2.2 描述** > 对3,9,-1,10,20进行冒泡排序 ```scala object Scala_Bubble_Sort { def main(args: Array[String]): Unit = { println(BubbleSort(Array(3,9,-1,10,20)).toBuffer) } def BubbleSort(a:Array[Int]):Array[Int] = { for(i <- 0 until a.size - 1){ for(j <- 0 until a.size - 1 -i){ if(a(j) > a(j+1)){ val temp = a(j) a(j) = a(j+1) a(j+1) = temp } } } a } def BubbleSort2a:Array[Int]):Array[Int] = { for(i <- 0 until a.size - 1;j <- 0 until a.size -1 - i; if(a(j)>a(j+1))){ val temp = a(j) a(j) = a(j+1) a(j+1) = temp } a } } ``` [参考文章链接](https://zhuanlan.zhihu.com/p/93129029)
标签:
Scala
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
https://lilinchao.com/archives/1232.html
上一篇
Spark读写HBase实践
下一篇
Scala稀疏数组练习
评论已关闭
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
NLP
4
标签云
算法
Nacos
Filter
二叉树
前端
Linux
JavaSE
RSA加解密
Yarn
设计模式
Jquery
DataWarehouse
MySQL
Spark RDD
Kafka
Java工具类
Netty
Spark
排序
Hadoop
机器学习
Sentinel
Golang
Spark Core
Java
Redis
递归
Scala
Kibana
Zookeeper
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞
评论已关闭