Rust冒泡排序

news2024/11/27 19:54:36

Rust冒泡排序

这段代码定义了一个名为 bubble_sort 的函数,接受一个可变的整数类型数组作为输入,然后使用嵌套的循环来实现冒泡排序。外部循环从数组的第一个元素开始迭代到倒数第二个元素,内部循环从数组的第一个元素开始迭代到倒数第二个元素。如果当前元素比下一个元素大,则交换它们的位置。在循环结束后,数组就会按升序排列。

在 main 函数中,我们定义了一个整数类型的数组,并将其传递给 bubble_sort 函数进行排序。最后,程序将输出排序后的数组

fn bubble_sort(arr: &mut [i32]) {//参数是可变化的i32的数组

    let n = arr.len();   //获取arr的数组的长度,坐标从0开始
    for i in 0..n {      //总循环是n次
        for j in 0..n-i-1 {    //冒泡排序,每次处理一个减少一次。
            if arr[j] > arr[j+1] {  //如果 前面的记录后面一个数值,交换,大值冒泡到后面
                arr.swap(j, j+1);
            }
        }
    }
}

fn main() {
    let mut arr = [5, 2, 9, 1, 5, 6,13,20,18];
    bubble_sort(&mut arr);
    println!("排序后的数组:{:?}", arr); // 输出 [1, 2, 5, 5, 6, 9]
}

VsCode 安装Rust插件

检查运行环境

编写第一个代码,大家都会,但也要编写,目的是检测环境,安装了rust为1.72.1版本

rustc --version
rustc 1.72.1 (d5c2e9c34 2023-09-13)

运行基本的代码Hello_world代码,这个简单

代码为

fn main(){
    let s="Hello world!";
    println!("{}",s);

}

let为定义了一个s为字符串,赋值为Hello world!的字符串,fn为函数function的简写,main函数说明是函数的入口,类似C++和c语言,记住基本格式,打印println后面多了一个“!”,其他的类似c++的函数语言,后面用;进行语言结束。

没有意外是返回Hello world字符串

调用基本函数

fn Hello_world() ->&static str {
    let s="Hello world by keny!";
    return s;
 
}

fn main(){
    let Hello_world_str=Hello_world();
    println!("{}",Hello_world_str);


}

还是Hello world的函数。定义了一个Hello_world的函数,函数直接返回字符串,通过main的函数进行调用这个定义的函数,运行结果是Hello world by keny

warning: function `Hello_world` should have a snake case name
 --> src/main.rs:1:4
  |
1 | fn Hello_world() ->&'static str {
  |    ^^^^^^^^^^^ help: convert the identifier to snake case: `hello_world`
  |
  = note: `#[warn(non_snake_case)]` on by default

warning: variable `Hello_world_str` should have a snake case name
 --> src/main.rs:8:9
  |
8 |     let Hello_world_str=Hello_world();
  |         ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `hello_world_str`

warning: `hello_world` (bin "hello_world") generated 2 warnings
    Finished dev [unoptimized + debuginfo] target(s) in 0.69s
     Running `target/debug/hello_world`
Hello world by keny!

Rust语法基础知识

变量

首先必须说明,Rust 是强类型语言,但具有自动判断变量类型的能力。这很容易让人与弱类型语言产生混淆。

如果要声明变量,需要使用 let 关键字。例如:

let a="abc";

不允许这样定义,说明a已经定义了字符串,后面有定义了float类型和int类型,实际是冲突的定义

a = "abc";
a = 4.56; 
a = 456;

检测的时候会提示

warning: unused variable: `a`
 --> src/main.rs:6:9
  |
6 |     let a=123.5;
  |         ^ help: if this is intentional, prefix it with an underscore: `_a`

warning: unused variable: `a`
 --> src/main.rs:8:9
  |
8 |     let a=123;
  |         ^ help: if this is intentional, prefix it with an underscore: `_a`

warning: unused variable: `a`
  --> src/main.rs:10:9
   |
10 |     let a=true;
   |         ^ help: if this is intentional, prefix it with an underscore: `_a`

当然,使变量变得"可变"(mutable)只需一个 mut 关键字。

let mut a=234;
a=567;

如果这样定义

let a=234;

let a=456;

会编译警告;“`#[warn(unused_variables)]` on by default”

重影(Shadowing)

    let a = 2;
    let a=a+1;
    let a=a*a;
    let a=a*a*a;
println!("{}",a);

重影与可变变量的赋值不是一个概念,重影是指用同一个名字重新代表另一个变量实体,其类型、可变属性和值都可以变化。但可变变量赋值仅能发生值的变化。

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

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

相关文章

mysql面试题7:MySQL事务原理是什么?MySQL事务的隔离级别有哪些?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:MySQL事务原理是什么? MySQL事务的原理是基于ACID(原子性、一致性、隔离性、持久性)特性来实现的,具体原理如下: Atomicity(原子性):事务…

深入理解操作系统- - 进程篇(1)

目录 进程解释: process in memory(进程在内存中包含什么) : 并发的进程: 进程定义: 个人定义: 书本定义: 进程状态: 进程何时离开CPU: 内部事件: 外部事件: 进…

Backblaze发布2023中期SSD故障数据质量报告

作为一家在2021年在美国纳斯达克上市的云端备份公司,Backblaze一直保持着对外定期发布HDD和SSD的故障率稳定性质量报告,给大家提供了一份真实应用场景下的稳定性分析参考数据。 本文我们主要看下Backblaze最新发布的2023中期SSD相关故障稳定性数据报告。…

华为ensp单臂路由及OSPF实验

单臂路由及OSPF实验 1.1实验背景 在这个实验中,我们模拟了一个复杂的网络环境,该网络环境包括多个子网和交换机。这个实验旨在帮助网络工程师和管理员了解如何配置单臂路由和使用开放最短路径优先(OSPF)协议来实现不同子网之间的…

【网络安全】网络安全之信息收集和信息收集工具讲解,告诉你黑客是如何信息收集的

一,域名信息收集 1-1 域名信息查询 可以用一些在线网站进行收集,比如站长之家 域名Whois查询 - 站长之家站长之家-站长工具提供whois查询工具,汉化版的域名whois查询工具。https://whois.chinaz.com/ 可以查看一下有没有有用的信息&#xf…

数据集笔记:OpenCelliD(手机基站开放数据库)

下载数据的方式可见:【数据获取】全球最大手机基站开源数据库 1 读取数据 import pandas as pdpd.read_csv(C:/Users/16000/Downloads/454.csv/454.csv,headerNone,names[Radio,MCC,MNC,LAC/TAC/NID,CID,Longitude,Latitude,Range,Samples,Changeable1,Changeable…

前端开发和后端开发的一些建议

前端开发和后端开发是Web开发的两个方向 前端开发主要负责实现用户在浏览器上看到的界面和交互体验,包括HTML、CSS和JavaScript等技术。后端开发主要负责处理服务器端的逻辑和数据,包括数据库操作、服务器配置和接口开发等技术。 前端开发 前端开发需…

卫星图像应用 - 洪水检测 使用DALI进行数据预处理

这篇文章是上一篇的延申。 运行环境:Google Colab 1. 当今的深度学习应用包含由许多串行运算组成的、复杂的多阶段数据处理流水线,仅依靠 CPU 处理这些流水线已成为限制性能和可扩展性的瓶颈。 2. DALI 是一个用于加载和预处理数据的库,可…

LabVIEW开发虚拟与现实融合的数字电子技术渐进式实验系统

LabVIEW开发虚拟与现实融合的数字电子技术渐进式实验系统 数字电子技术是所有电气专业的重要学科基础,具有很强的理论性和实践性。其实验是提高学生分析、设计和调试数字电路能力,培养学生解决实际问题的工程实践能力,激发学生创新意识&…

leetCode 188.买卖股票的最佳时机 IV 动态规划 + 状态压缩

给你一个整数数组 prices 和一个整数 k ,其中 prices[i] 是某支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。也就是说,你最多可以买 k 次,卖 k 次。 注意:你不能同时参与多…

国庆中秋特辑(五)MySQL如何性能调优?下篇

目录 5.数据库维护6. 数据库调优工具7.数据库架构优化8.代码层面优化9. 硬件层面优化10. 数据库安全 MySQL 性能优化是一项关键的任务,可以提高数据库的运行速度和效率。以下是一些优化方法,包括具体代码和详细优化方案。 接下来详细介绍,共有…

Hudi第二章:集成Spark

系列文章目录 Hudi第一章:编译安装 Hudi第二章:集成Spark 文章目录 系列文章目录前言一、安装Spark1、安装Spark2.安装hive 二、spark-shell1.启动命令2.插入数据3.查询数据1.转换DF2.查询 3.更新4.时间旅行5.增量查询6.指定时间点查询7.删除数据1.获取…

C/C++字符函数和字符串函数详解————长度受限制的字符串函数

个人主页:点我进入主页 专栏分类:C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂。 目录 1.前言 2.长度受限制的字符…

arm 汇编基础指令

实现1-100求和 .text .globl _start_start:mov r0, #1 i&#xff0c;i1mov r1, #100 条件变量i<100mov r2, #0 sumLoop: 循环cmp r0,r1 比较r0和r1的大小bhi stop 当r0>r1时&#xff0c;跳到stop标签a…

Ubuntu服务器安全性提升:修改SSH默认端口号

在Ubuntu服务器上&#xff0c;SSH&#xff08;Secure Shell&#xff09;是一种至关重要的远程连接工具。它提供了一种安全的方式来远程连接和管理计算机系统&#xff0c;通过加密通信来确保数据的保密性和完整性。SSH协议广泛用于计算机网络中&#xff0c;用于远程管理、文件传…

什么是 MyBatis?与 Hibernate 的区别

引言 在现代的应用程序开发中&#xff0c;与数据库的交互是至关重要的。为了简化数据库访问&#xff0c;许多开发者选择使用ORM&#xff08;对象-关系映射&#xff09;框架。MyBatis和Hibernate都是流行的ORM框架&#xff0c;它们可以帮助开发者更轻松地将Java对象映射到数据库…

Springboot+vue的球队训练信息管理系统(有报告),Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue的球队训练信息管理系统&#xff08;有报告&#xff09;&#xff0c;Javaee项目&#xff0c;springboot vue前后端分离项目。 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的球队训练信息管理系统&#xff0c;采用M&…

选择排序、冒泡排序、快速排序、归并排序

1、选择排序 设一个数据集有n个元素&#xff0c;选择这n个元素中最小的一个与第一个元素交换位置&#xff0c;再在剩下的n-1个元素中选择最小的一个与第二个元素交换位置&#xff0c;直到在最后两个元素中选择最小的一个放在倒数第二的位置上&#xff0c;简单选择排序是不稳定…

【Arduino ESP32教程入门】Note

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析3 目录 &#x1f449;&#x1f3fb;arduino开发板引脚USB串行总线串行总线和并行总线的优…

Kerberos常见报错汇总

一.kdb5_util: Password mismatch while reading master key from keyboard 1>.错误复现 2>.错误原因分析 在初始化Kerberos数据库时需要输入密码&#xff0c;2次密码输入不一致就会导致该错误。 3>.解决方案 重新执行"kdb5_util -r YINZHENGJIE.COM create -s…