003 选择排序(lua)

文章目录

    • 1selectionSort.lua
    • 2selectionSort.lua
    • 复杂度
    • SortingHelper.lua

先挑最值,再把剩下的挑最值,再把剩下的挑最值。。。

1selectionSort.lua

  
-- 排序函数  
function selectionSort(arr)  -- 外层循环,从数组的第一个元素开始,对每个元素进行排序  for i = 1, #arr do  -- 假设当前位置的元素是最小的  local minIndex = i  -- 内层循环,从当前位置开始,查找剩余元素中的最小值  for j = i, #arr do  -- 如果找到一个更小的元素,更新最小元素的索引  if arr[j] < arr[minIndex] then  minIndex = j  end  end  -- 交换当前位置和最小元素的位置  swap(arr, i, minIndex)  end  
end  -- 交换函数  
function swap(arr, i, j)  -- 使用一个临时变量来交换两个元素的值  local temp = arr[i]  arr[i] = arr[j]  arr[j] = temp  
end  -- 主程序  
-- 定义一个待排序的数组  
local arr = {1, 5, 2, 8, 9, 3}  
-- 调用排序函数进行排序  
selectionSort(arr)  
-- 打印排序后的数组  
for _, v in ipairs(arr) do  print(v .. " ")  
end  

Lua中的数组和字典都使用相同的数据结构(即表),但在这个例子中,我们只使用了数组部分。

2selectionSort.lua


function selectionSort(arr)  local length = #arr  for i = 1, length do  local minIndex = i  for j = i, length do  if arr[j] < arr[minIndex] then  minIndex = j  end  end  arr[i], arr[minIndex] = arr[minIndex], arr[i]  -- Swap elements  end  
end  function main()  local arr = {1, 5, 2, 8, 9, 3}  selectionSort(arr)  for _, v in ipairs(arr) do  print(v, " ")  end  
end  main()

复杂度

O(n^2)

SortingHelper.lua


-- SortingHelper.lua  -- isSorted function to check if an array is sorted in ascending order  
function isSorted(arr)  for i = 2, #arr do  if arr[i-1] > arr[i] then  return false  end  end  return true  
end  -- sortTest function to test a sorting algorithm and measure its execution time  
function sortTest(sortName, arr)  -- Lua doesn't have a direct equivalent of System.nanoTime(),  -- so we use os.clock() which provides the CPU time used by the Lua state in seconds  local startTime = os.clock()  if sortName == "SelectionSort" then  selectionSort(arr)  end  local endTime = os.clock()  local time = endTime - startTime  -- This will give the time in seconds  if not isSorted(arr) then  error(sortName .. " failed")  end  print(string.format("%s, n = %d: %f s", sortName, #arr, time))  
end  -- This is a placeholder for the actual selectionSort function,  
-- which should be implemented separately as shown in the previous answer.  
function selectionSort(arr)  -- Implementation of the selection sort algorithm goes here  
end  -- Example usage:  
local arr = {1, 5, 2, 8, 9, 3}  
sortTest("SelectionSort", arr)

Lua的os.clock()函数测量的是CPU时间,而不是实际经过的时间。这在某些情况下可能不同于Java的System.nanoTime(),后者测量的是实际经过的时间。此外,由于Lua的性能测量可能不如Java精确,因此结果可能会有所不同。

还需要注意的是,Lua中没有异常处理机制与Java的throw new RuntimeException()完全对应。在Lua中,我们通常使用error()函数来抛出一个错误,这会终止程序的执行。如果你需要更复杂的错误处理,你可能需要实现自己的错误处理逻辑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/37342.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2-自动驾驶关键技术框架

框架 来自《自动驾驶汽车决策与控制》这本书 三大技术 车载平台的关键技术&#xff1a; 环境感知技术&#xff1a;这是自动驾驶车辆能够“看”和“感知”周围世界的技术。它包括使用摄像头、雷达、激光雷达&#xff08;Lidar&#xff09;和超声波传感器来检测和识别道路、障…

LeetCode21-合并两个有序链表

题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4] 示例 2&#xff1a; 输入&#xff1a;l1 [], l2 [] 输出&#xf…

ZYNQ MPSOC烧写问题记录

1、如果带有ARM代码&#xff0c;则ZYNQ MPSOC烧写的烧写是通过ViTIS进行的&#xff0c;通过JTAG模式进行烧写&#xff0c;如下图的PS_MODEx配置成0000&#xff0c;这个只与硬件相关&#xff0c;硬件拉高拉低。 2、如果不带ARM代码&#xff0c;则烧写过程与前版本一致。

发现传统之美,AI赋能非遗传承

大家好&#xff0c;今天想在本片博文分享下关于皮影这项非物质文化遗产&#xff0c;以及如何简单借助人工智能AI赋能皮影的奇妙可能。 皮影戏的魅力 在喧嚣的现代生活中&#xff0c;我们不应该忘记那些传统的手工艺和技艺&#xff0c;它们是中华文化的瑰宝&#xff0c;它们是…

新手做ASO优化必须要了解的8大指标

在进行 ASO 优化时&#xff0c;以下这些指标通常应优先考虑&#xff1a; 1. 关键词排名 - 这是衡量 ASO 效果的关键指标之一。了解您的应用在特定关键词搜索结果中的位置&#xff0c;有助于评估优化策略的有效性。 2. APP下载量 - 直接反映了应用的受欢迎程度和ASO工作对吸…

ONLYOFFICE8.1版本桌面编辑器——功能测评

一、编辑DOCX 相信大家都有写word文档的经历&#xff0c;不知道大家是不是跟我一样&#xff0c;感觉做一个word不难&#xff0c;但想做好一个word却很麻烦&#xff0c;功能太多&#xff0c;看的人眼花缭乱&#xff0c;有时候一个功能要找很久&#xff0c;甚至有的功能用一辈子都…

Edge浏览器下载文件提示检测到病毒无法下载

当Edge浏览器提示检测到病毒而无法下载时&#xff0c;可以采取以下步骤解决问题&#xff1a; 1. 关闭 Microsoft Defender SmartScreena: 打开Edge浏览器设置&#xff0c;找到“隐私、搜索和服务”选项。在“安全性"部分&#xff0c;关闭"Microsoft Defender Smart…

[数据库]事务的隔离级别存储引擎

事务的隔离级别 存储引擎 举例 myisam 进行回滚操作后可以发现有一个警告没有行受到影响 memory 比如用于qq的在线离线状态

选专业,适合理科女生的大学专业有哪些?

对于理科女生来说&#xff0c;选择大学专业时&#xff0c;既要考虑自己的兴趣和优势&#xff0c;也要考虑未来的就业前景和发展趋势。以下是一些适合理科女生的大学专业推荐。 一、专业选择要综合考虑 有的人的爱好只是一时兴起&#xff0c;有的人只是愿意为了兴趣爱好&#x…

vscode 使用正则将/deep/ 替换成 :deep()

在VSCODE编辑器的SEARCH中按上图书写即可&#xff0c;正则表达式如下&#xff1a;(\/deep\/)(.*?)(?\{) 替换操作如下&#xff1a;:deep($2) 如果有用,号隔开的用&#xff1a;(\/deep\/)(.*?)(?,)替换操作如下&#xff1a;:deep($2) 即可实现快速替换所有/deep/写法; 同理…

【C语言】--操作符详解

&#x1f32d;个人主页: 起名字真南 &#x1f37f;个人专栏:【数据结构初阶】 【C语言】 目录 1 算术操作符1.1 和 -1.2 *1.3 /1.4 % 2 赋值操作符 &#xff1a;2.1 复合赋值符 3 单目操作符3.1 和- - 4 强制类型转换5 printf 和 scanf5.1 printf5.1.1 基本用法5.1.2 占位符5.…

【高级篇】MySQL集群与分布式:构建弹性和高效的数据服务(十四)

引言 在探讨了《分区与分片》策略后,我们已经学会了如何在单一数据库层面有效管理大量数据和提升查询效率。本章,我们将踏上更高层次的探索之旅,深入MySQL集群与分布式技术的广阔领域。这些技术不仅能够横向扩展系统的处理能力和存储容量,还能显著增强数据服务的可靠性和响…

【教学类65-05】20240627秘密花园涂色书(中四班练习)

背景需求: 打印以下几款秘密花园样式&#xff08;每款10份&#xff09;给中四班孩子玩一下&#xff0c;看看效果 【教学类65-01】20240622秘密花园涂色书01&#xff08;通义万相&#xff09;&#xff08;A4横版2张&#xff0c;一大3小 38张纸76份&#xff09;-CSDN博客文章浏览…

后端加前端Echarts画图示例全流程(折线图,饼图,柱状图)

本文将带领读者通过一个完整的Echarts画图示例项目&#xff0c;演示如何结合后端技术&#xff08;使用Spring Boot框架&#xff09;和前端技术&#xff08;使用Vue.js或React框架&#xff09;来实现数据可视化。我们将实现折线图、饼图和柱状图三种常见的数据展示方式&#xff…

黄子韬直播风暴揭秘经济人风波

黄子韬直播风暴&#xff1a;揭秘经纪人风波&#xff0c;真诚道歉小马丁6月27日晚&#xff0c;娱乐圈再次掀起波澜&#xff0c;黄子韬在直播中罕见地谈及了去年那场业界的经纪人风波&#xff0c;并意外地再次回应了与DJ小马丁的演出争议&#xff0c;这无疑让广大粉丝和网友们热血…

葡萄串目标检测YoloV8——从Pytorch模型训练到C++部署

文章目录 软硬件准备数据准备数据处理脚本模型训练模型部署数据分享软硬件准备 训练端 PytorchultralyticsNvidia 3080Ti部署端 fastdeployonnxruntime数据准备 用labelimg进行数据标注 数据处理脚本 xml2yolo import os import glob import xml.etree.ElementTree as ETxm…

黑龙江等保测评视角下的物联网安全策略探索

引言随着物联网技术在黑龙江省各行各业的广泛应用&#xff0c;信息安全问题日益凸显。等保测评作为网络安全保障体系的重要组成部分&#xff0c;对于物联网环境下的数据保护、设备安全及隐私防护具有重要意义。 本文旨在探讨在等保测评框架下&#xff0c;如何构建有效的物联网…

SpringBoot-SpringBoot中文文档

简介 Spring Boot是由Pivotal团队提供的一套开源框架&#xff0c;可以简化spring应用的创建及部署。它提供了丰富的Spring模块化支持&#xff0c;可以帮助开发者更轻松快捷地构建出企业级应用。Spring Boot通过自动配置功能&#xff0c;降低了复杂性&#xff0c;同时支持基于J…

linux 常用的命令、文件路径、其他工具或软件包

命令 sudo apt dist-upgrade 解决显示 暂不升级、未被升级dd if/dev/zero of./rootfs.img bs1G count6 制作一个 6G 的空白镜像。bs 是块字节数&#xff0c;count 是 bs 的个数。dd if./rootfs.img of/dev/sdc2 bs512 烧录 rootfs.img 镜像到 /dev/sdc2。bs 是 512 个字节&…

【51单片机入门】矩阵键盘

文章目录 前言矩阵键盘介绍与检测原理原理图代码讲解总结 前言 在嵌入式系统设计中&#xff0c;键盘输入是一种常见的人机交互方式。其中&#xff0c;矩阵键盘因其简单、方便和易于扩展的特性&#xff0c;被广泛应用于各种设备中。本文将介绍如何使用51单片机来实现矩阵键盘的…