选择排序--scala

Scala中的排序算法:冒泡、选择与插入排序 本文通过Scala语言实现的冒泡排序、选择排序和插入排序算法进行了解读。每种排序算法都有其特点和使用场景,通过Scala函数式编程的方式展示了算法的实现和排序过程。同时,文章还分析了每种算法的时间复杂度,为读者提供了算法效率的参考。 阅读详情
object SelectSort {
  def main(args: Array[String]): Unit = { //创建要给30个的随机的数组
    val arr = new Array[Int](30)
    for (i <- 0 until 30) {
      arr(i) = (Math.random * 800).toInt // 生成一个[0, 800) 数

    }
    System.out.println("排序前")
    //System.out.println(Arrays.toString(arr));
    val data1 = new Date
    val simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
    val date1Str = simpleDateFormat.format(data1)
    System.out.println("排序前的时间是=" + date1Str)
    selectSort(arr)
    val data2 = new Date
    val date2Str = simpleDateFormat.format(data2)
    System.out.println("排序前的时间是=" + date2Str)
    //System.out.println("排序后");
  }

  def selectSort(arr: Array[Int]): Unit = { //在推导的过程,我们发现了规律,因此,可以使用for来解决
    //选择排序时间复杂度是 O(n^2)
    for (i <- 0 until arr.length - 1) {
      var minIndex = i
      var min = arr(i)
      for (j <- i + 1 until arr.length) {
        if (min > arr(j)) { // 说明假定的最小值,并不是最小
          min = arr(j) // 重置min

          minIndex = j // 重置minIndex

        }
      }
      // 将最小值,放在arr[0], 即交换
      if (minIndex != i) {
        arr(minIndex) = arr(i)
        arr(i) = min
      }
      //System.out.println("第"+(i+1)+"轮后~~");
    }
  }
}
scala-sorts: 探索Scala中的排序算法实战 空间复杂度指的是算法在运行过程中临时占用存储空间的大小。它同样不依赖于具体的硬件环境,是一种算法占用空间资源的度量标准。空间复杂度也通常用大O表示法来表示,如O(1)表示算法占用常数空间,O(n)表示占用线性空间等。Scala语言因其简洁性和表达力,在处理集合和数据流时显得尤为高效。Scala内置了一系列的排序方法,能够满足大多数排序需求。本章节将深入探讨Scala标准库中的排序函数,分析其排序方法的参数和选项,以及如何利用Scala的特性来实现自定义排序规则。 阅读详情

相关推荐

计算机组成原理实验(已通关)-华中科技大学头歌Educoder(Logisim)

汉字国标码转区位码实验 汉字机内码获取实验 8位可控加减法电路设计 第2关 CLA182四位先行进位电路设计 第3关 4位快速加法器设计 第4关 16位快速加法器设计 第5关 32位快速加法器设计 第6关 5位无符号阵列乘法器设计 6位有符号补码阵列乘法器 乘法流水线设计 原码一位乘法器设计 偶校验编码设计 偶校验解码电路设计 16位海明编码电路设计 16位海明解码电路设计 海明编码流水传输实验 16位CRC并行编解码电路设计 CRC编码流水传输实验

紫荆鱼的博客 4万+

scala 选择排序

/** * 工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素, * 存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素, * 然后放到已排序序列的末尾 */ object SeletionSort extends App { var list: Array[Int] = Array(2, 45, 1, 4, 8, 2, 5, 8, 35, ...

200+新能源动力电池研发测试生产售后项目上位机开发 672

使用pdfBox实现pdf转图片出现中文方块乱码 简单修改源码解决

参考文章 问题排查:使用pdfbox将pdf转image时STSong-Light字体中文乱码 pdfbox版本是2.0 日志中打印出类似这样的日志(例:Using fallback XXX for CID-keyed font STSong-Light),就说明系统没有安装STSong-Light字体,pdfbox使用XXX字体来替代了。如果出现方块,就说明没有这种字体,并且替代字体也没有,日志也有相应的其他提示。 正常操作就是安装缺失的 STSong-Light 字体,但是在网上搜到的都是 STSong

aji_csdn的博客 5266

scala 选择排序

package algorithm import org.apache.hadoop.io.LongWritable.Comparator import scala.collection.mutable.ListBuffer /** * Created by Administrator on 2018/6/19. */ object secSortApp { def main(...

bymain的博客 653

数字后端流程--place

Floorplan完成后芯片的大致框架已经出现,万里长征已经迈出特别重要的第一步了,前面的步骤我们已经完成了io port,macro的摆放,现在core外只剩下std cell(标准单元)了,Place这一步就是要把std cell放进core里。看到密密麻麻的std cell也不用紧张,因为放std cell不用像macro手动一个一个摆,工具就可以帮我们完成大部分工作。虽然这一步的工作只有一个,但也不是只要Place完就能进行下一步的,衡量Place质量是否满足标准会通过以下几点判断。

qq_68400574的博客 772

IC版图设计之OASIS文件格式详解

OASIS(Open Artwork System Interchange Standard)是继GDSII之后新一代的集成电路版图数据交换标准,由SEMI在2004年正式发布(SEMI标准号:SEMI P39)。高压缩率:相比GDSII可减少3-10倍文件体积扩展性强:支持纳米级工艺的复杂图形描述跨平台兼容:独立于EDA工具和操作系统安全增强:内置校验和与加密支持。

ZZcppc的博客 2444

选择排序的scala实现

最近在微信读书上翻到一本不错的算法书,叫算法图解,里面比较趣味性的讲解了计算成本,从二分查找开始,到选择排序、快速排序等等,书里面的算法实现都是通过python来实现的,因此,考虑用scala对相关算法进行实现,在了解算法的同时能够练练自己的代码能力,话不多说,直接上代码: 选择排序的最基础原理就是从一个数组中先找出一个最大(或者最小)的数字,放入到新数组的第一位,再从剩下的数组中找出最大的数字...

lorrylee1346的博客 365

用PyTorch复现经典:手把手教你用Double DQN训练AI玩转打砖块(附完整代码与调参心得)

本文详细介绍了如何使用PyTorch实现Double DQN算法,训练AI智能体玩转经典雅达利游戏Breakout(打砖块)。从环境配置、帧预处理到网络架构设计和经验回放机制,全面解析了强化学习在游戏AI中的应用。文章还提供了关键调参技巧和实战优化方案,帮助开发者快速掌握Double DQN的核心实现与性能优化方法。

weixin_30596165的博客 229

Scala练习-选择排序

package day14import day14.StraightInsertionSort.{printlnArray, sortN2}/** * Created by doctorq on 2017/6/28. * 选择排序 */ object SelectionSort extends Utils with App { def sort(unSorted: Array[Int

doctorq 1788

ZYNQ裸机双网口通信实战:手把手教你用SDK和LWIP配置PS+PL以太网(附完整源码)

本文详细介绍了在ZYNQ裸机环境下实现双网口通信的全流程,包括硬件配置、LWIP协议栈优化及TCP通信实现。通过Vivado SDK和LWIP协议栈,开发者可以高效配置PS端内置网口与PL端扩展网口,提升嵌入式网络应用的灵活性和性能。附完整源码,助力快速开发。

weixin_30831529的博客 422

DP83848以太网PHY芯片:自动协商与MII/RMII接口实战解析

以太网物理层(PHY)芯片是嵌入式网络通信的核心,负责数字信号与模拟信号的转换,其稳定性和兼容性直接影响系统性能。其工作原理基于IEEE标准,通过管理接口(MDC/MDIO)配置内部寄存器,实现链路速率、双工模式等关键参数的设定。这项技术的核心价值在于为工业控制、汽车电子等严苛环境提供可靠、自适应的网络连接。在实际应用中,PHY芯片通过自动协商(Auto-Negotiation)功能与对端设备智能匹配最佳通信模式,极大提升了产品的易用性。同时,其支持的MII与RMII接口为硬件设计提供了灵活性,前者是标准并

weixin_29189987的博客 374

用scala实现冒泡和选择排序

scala实现冒泡排序和选择排序 class sort{ def BubbleSort(arr: Array[Int]): Unit = { for (i <- 0 until arr.length-1) //总共运行n-1趟 { for (j <- 0 until arr.length-1-i) //一趟的比较次数,每轮减少一次 { if(arr(j+1)<arr(j)) {

stan1111的博客 852

超越防抖:索尼CXD5254GG芯片如何重新定义电子影像稳定

索尼CXD5254GG芯片通过融合6轴IMU与图像传感器数据,重新定义了电子影像稳定技术。其核心突破在于实时地平线校正、抑制果冻效应和镜头畸变校正,并搭载智能画质控制器提升画面细节。该芯片适用于广播制作、体育娱乐、安防监控和机器人视觉导航等专业领域,提供开箱即用的优化参数配置,大幅缩短开发周期。CXD5254GG不仅实现稳定成像,更通过姿态感知与智能优化,为专业影像应用提供了完整的稳定解决方案。

致力于lidar应用开发 114

scala选择排序

package com.aura.scala.test /* scala的选择排序的实现 */ object XuanZhesort { def main(args: Array[String]): Unit = { //定义数组 var array=Array(1,4,3,6,2,8,3,3) //排序前进行输出数组 println(array.mkString("[",",","]")) //...

weixin_44701192的博客 269

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

用java和scala代码实现快速排序、选择排序、冒泡排序

目录排序方法代码java实现排序生成随机数组冒泡排序选择排序快速排序测试Scala排序生成随机数组冒泡排序选择排序快速排序 排序方法代码 java实现排序 生成随机数组 public static int[] arr; // 生成随机数组 public static int[] getRandomArr(int size) { arr = new int[size]; Random random = new Random(); for (in

GodXuzzZ的博客 345

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

scala 排序算法 简单选择算法

package com.xing.hai /** * Created by xxxxx on 2/22/2017. * 简单选择排序 * 核心逻辑 * 在要排序的一组数中,选出最小的一个数与第一个位置的数交换; * 然后在剩下的数当中再找最小的与第二个位置的数交换, * 如此循环到倒数第二个数和最后一个数比较为止。 */ ...

78

java和scala版本的冒泡排序、快速排序、归并排序、选择排序、插入排序

1.冒泡排序 ① java版本的冒泡排序 import java.util.Arrays; //冒泡排序 public class BubbleSort { /** * 冒泡排序 * @param arr 要排序的数组 */ public static void bubbleSort(int[] arr) { int tmp;/...

程序猿丶HLK 432

选择排序(OC/java/python/scala)

一、浅谈数组和链表 数组:具有相同类型的元素的集合。数组分配在一块连续的数据空间上,因此存储效率低,插入和删除元素效率低,支持随机访问,访问元素效率高。 链表(单向链表、双向链表、循环链表):链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。插入,删除效率高,空间利用率高,不支持随机访问,查找元素效率低复制代码二、 选择排序介绍: 1.方案一:...

weixin_34355881的博客 137

scala 选择排序 冒泡排序

def xuanze(a: Array[Int]) {     var j: Int = 0;     var i: Int = 0;     var index = 0;     var aLen = a.length -1 ;       for (i     for(j      if (a(j) > a(index))         index = j ;    

只为曾经的执着 860

scala实现冒泡排序、插入排序、选择排序、快速排序、归并排序

冒泡排序 def bubbleSort(array: Array[Int]):Unit={ var swap = true//设置swap值,如果没有发生交换则证明已经有序,不必再继续循环 var temp = 0 for(i <- 0 until array.length if swap == true){ swap = false for(j<- 0 until array.length-i-1){//注意这里的判断条件 i.

qq_38748148的博客 494

Java(Scala)排序总结(选择|冒泡|插入|快速|归并)

Java版本 package sort; import java.util.Arrays; /** * @ClassName: Sort * @Description: * @Author: xuezhouyi * @Version: V1.0 **/ public class Sort { public static void main(String[] args) { ...

一名假的程序猿 323

scala实现简单排序

使用scala实现冒泡、选择、插入排序

a805814077的博客 1358

Scala语言的排序算法

内部排序:所有待排序数据都可以放入内存中,算法在内存中进行排序。外部排序:数据量较大,无法全部放入内存,需要借助外部存储设备进行排序。稳定排序:相等元素的相对次序在排序后仍然保持不变。不稳定排序:相等元素的相对次序可能会改变。在讨论具体的排序算法之前,我们先了解一下 Scala 中的常用集合类型。Scala 提供了丰富的集合库,包括ListArraySetMap等,这些集合类型在排序时具有各自的特点。排序算法在计算机科学中具有重要的意义,理解并掌握不同的排序算法对于开发高效的程序至关重要。

2501_91390782的博客 415
上一篇: 分治算法--汉诺塔应用(scala实现)
下一篇: 什么才是一个好的数据模型设计
问道2020
博客等级 码龄8年 4粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值