❀记忆冒泡、选择和插入排序算法思想在bash里运用❀

目录

冒泡排序算法:)

选择排序算法:)

插入排序算法:)


冒泡排序算法:)

思想:依次比较相邻两个元素,重复的进行直到没有相邻元素需要交换,排序完成。

#!/bin/bash
arr=(12 324 543 213 65 64 1 3 45)  #定义一个数组
n=${#arr[*]}  #获取数组的长度
#外部循环用于控制排序轮数,一般为要排序的数组长度减1,因为最后一次循环只剩下一个数组元素,不需要对比,同时数组已经完成排序了
for (( i=1; i<=$n-1; i++ )) do#内部循环主要用于对比数组中每个相邻元素的大小,以确定是否交换位置,对比和交换次数随排序轮数而减少for (( j=0; j<$n-$i; j++ ))doif [ ${arr[j]} -gt ${arr[j+1]} ];then  #如果前面的数比后面的数大c=${arr[j]}; arr[j]=${arr[j+1]}; arr[j+1]=$c  #就交换位置fidonedone
echo "冒泡排序后的数组为:${arr[*]}"

选择排序算法:)

思想:每次从未排序的元素中选择最小(或最大)的元素,然后将其放到已排序序列的末尾

#!/bin/bash
arr=(5 2 8 1 9) #定义待排序的数组
n=${#arr[*]} #获取数组长度
# 外层循环,控制比较的轮数
for ((i=0; i<$n-1; i++))
dos=$i  #假设当前轮次的第一个元素为最小值#内层循环,从当前轮次的第二个元素开始,依次与最小值比较for ((j=i+1; j<$n; j++))doif [[ arr[j] -lt arr[s] ]] #如果找到更小的元素thens=$j  #则更新最小值的索引fidone#将最小值与当前轮次的第一个元素交换位置c=${arr[i]}; arr[i]=${arr[s]}; arr[s]=$c
done
echo "选择排序后的数组为:${arr[*]}"

插入排序算法:)

思想:将后面的数与前面的数比较,如果后面的数小于前面的数,就将后面的数插入到前面的数的前面。

#!/bin/bash
arr=(23 3 34 652 454 122 4 6) #定义一个数组
n=${#arr[*]} #获取数组的长度
for (( i=1; i<$n; i++ ))
dofor (( j=0; j<$i; j++ ))doif [[ ${arr[i]} -lt ${arr[j]} ]];then  #如果后面的数小于前面的数c=${arr[i]}; arr[i]=${arr[j]}; arr[j]=$c  #则交换位置,将后面的数插入到前面的数的前面fidone
done
echo "插入排序后的数组为:${arr[*]}"

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

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

相关文章

Canal+RabbitMQ实现MySQL数据同步至ClickHouse

ClickHouse作为一个被广泛使用OLAP分析引擎&#xff0c;在执行分析查询时的速度优势很好的弥补了MySQL的不足&#xff0c;但是如何将MySQL数据同步到ClickHouse就成了用户面临的第一个问题。本文利用Canal来实现ClickHouse实时同步MySQL数据&#xff0c;使用RabbitMQ来做消息队…

01、Kafka ------ 下载、安装 ZooKeeper 和 Kafka

目录 Kafka是什么&#xff1f;安装 ZooKeeper下载安装启动 zookeeper 服务器端启动 zookeeper 的命令行客户端工具 安装 Kafka下载安装启动 Kafka 服务器 Kafka是什么&#xff1f; RabbitMQ的性能比ActiveMQ的性能有显著提升。 Kafka的性能比RabbitMQ的性能又有显著提升。 K…

神经网络:经典模型热门模型

在这里插入代码片【一】目标检测中IOU的相关概念与计算 IoU&#xff08;Intersection over Union&#xff09;即交并比&#xff0c;是目标检测任务中一个重要的模块&#xff0c;其是GT bbox与pred bbox交集的面积 / 二者并集的面积。 下面我们用坐标&#xff08;top&#xff0…

本地缓存 - LoadingCache

本地缓存 面试经常会被问到如何解决缓存击穿问题&#xff0c;今天就来带你弄懂他&#xff01;平时业务中也会经常使用到本地缓存&#xff0c;公司里使用比较多的本地缓存 loadingcache,其背后的架构就是Guava cache&#xff0c;Guava Cache 是一个全内存的本地缓存实现&#x…

李沐机器学习系列2--- mlp

1 Introduction LP中有一个很强的假设&#xff0c;输入和输出是线性关系&#xff0c;这一般是不符合事实的。 通过几何的方式去对信息进行理解和压缩是比较高效的&#xff0c;MLP可以表示成下面的形式。 1.1 从线性到非线性 X ∈ R n d X \in R^{n \times d} X∈Rnd表示输入…

分布微服软件体系快速云端架构

1 概述 分布微服软件体系云端架构平台&#xff0c;以主流的NACOS服务器作为注册配置中心&#xff0c;采用主流的Gradle框架&#xff0c;内嵌Tomcat10以上版本&#xff0c;用于快速构造各类基于JDK17以上的信息应用系统的分布式微服务软件体系架构&#xff0c;可以适用关系型SQ…

Unity ShaderGraph 技能冷却转圈效果

Unity ShaderGraph 技能冷却转圈效果 前言项目场景布置代码编写ShaderGraph 连线总结 参考 前言 遇到一个需求&#xff0c;要展示技能冷却的圆形遮罩效果。 项目 场景布置 代码编写 Shader核心的就两句 // 将uv坐标系的原点移到纹理中心 float2 uv i.uv - float2(0.5, 0…

芯课堂 | MCU之TIMER精准延时

引言 华芯微特公司SWM系列单片机提供的TIMER个数和功能有些微差别&#xff0c;为了让您更加简单的使用这一功能&#xff0c;下面小编将以SWM190为例&#xff0c;给大家展示如何使用SWM系列产品的TIMER功能。 TIMER精准延时 一、TIMER简介 TIMER是一种定时器工具&#xff0c;…

【零基础入门TypeScript】TypeScript - 环境设置

目录 本地环境设置 文本编辑器 TypeScript 编译器 安装 Node.js 在 Windows 上安装 在 Mac OS X 上安装 IDE支持 视觉工作室代码 在 Windows 上安装 在 Mac OS X 上安装 在 Linux 上安装 括号 括号的 TypeScript 扩展 var message:string "Hello World"…

力扣hot100 二叉树的层序遍历 BFS 队列

&#x1f468;‍&#x1f3eb; 题目地址 时间复杂度&#xff1a; O ( n ) O(n) O(n)空间复杂度&#xff1a; O ( n ) O(n) O(n) &#x1f60b; 队列写法 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode…

工业物联网上篇——什么是IIOT?

工业物联网背后的理念是使用工业设施中“哑巴设备”多年来产生的数据。装配线上的智能机器不仅可以更快地捕获和分析数据&#xff0c;且在交流重要信息方面也更快&#xff0c;这有助于更快、更准确地做出业务决策。 信息技术&#xff08;IT&#xff09;和运营技术&#xff08;O…

网络安全—IPSec安全策略

文章目录 网络拓扑添加策略ESP添加筛选器添加筛选器的操作另一台主机设置 AH 使用Windows Server 2003系统 网络拓扑 client1 IP 192.168.17.105client2 IP 192.168.17.106 只要保证两个主机在同一网段接口&#xff0c;即互相ping通即可完成策略的实现 下面的所有通讯都只是…