class 004 选择 冒泡 插入排序

news2025/2/5 19:52:07

我感觉这个真是没有什么好讲的, 这个是比较简单的, 感觉没有什么必要写一篇博客, 而且这个这么简单的排序问题肯定有人已经有写好的帖子了, 肯定写的比我好, 所以我推荐大家直接去看“左程云”老师的讲解就很好了, 一定是能看懂的, 要是用文字形式再写一遍, 反而有点画蛇添足了. 这里就将三个排序的代码写上.

这三个排序算法中唯一需要注意的是:插入排序, 这个在小数据量的时候排序的速度是非常快的, 一般认为数组长度在 10 ~ 50 之间, 插入排序的效率是非常快的. 后续学习的希尔排序, Tim 排序都有插入排序的参与. Tim 排序是 Python 和 Java 中内置的排序方式, 有兴趣可以去了解一下.

这里就直接附上对应的链接, 大家自己直接去看吧!!!

算法讲解004【入门】选择、冒泡、插入排序-左程云-算法通关-哔哩哔哩视频 (bilibili.com)

在这里插入图片描述

交换的方法实现:

public static void swap(int[] arr, int i, int j) {  
    int tmp = arr[i];  
    arr[i] = arr[j];  
    arr[j] = tmp;  
}

1. 冒泡排序

public static void bubbleSort(int[] arr) {  
    if (arr == null || arr.length < 2) {  
       return;  
    }  
  
    for (int i = 0; i < arr.length - 1; i++) {  
       for (int j = 0; j < arr.length - i - 1; j++) {  
          if (arr[j] > arr[j + 1]) {  
             swap(arr, j, j + 1);  
          }  
       }  
    }  
}

2. 选择排序

public static void selectionSort(int[] arr) {  
    if (arr == null || arr.length < 2) {  
       return;  
    }  
    for (int minIndex, i = 0; i < arr.length - 1; i++) {  
       minIndex = i;  
       for (int j = i + 1; j < arr.length; j++) {  
          if (arr[j] < arr[minIndex]) {  
             minIndex = j;  
          }  
       }  
       swap(arr, i, minIndex);  
    }  
}

3. 插入排序

public static void insertionSort(int[] arr) {  
    if (arr == null || arr.length < 2) {  
       return;  
    }  
    for (int i = 1; i < arr.length; i++) {  
       for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) {  
          swap(arr, j, j + 1);  
       }  
    }  
}

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

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

相关文章

计算机视觉算法知识详解(含代码示例)

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

算法: 二分查找题目练习

文章目录 二分查找二分查找在排序数组中查找元素的第一个和最后一个位置搜索插入位置x 的平方根山脉数组的峰顶索引寻找峰值寻找旋转排序数组中的最小值点名 总结精华模版 二分查找 二分查找 没啥可说的,轻轻松松~ class Solution {public int search(int[] nums, int target…

IDEA 配置 Git 详解

本文将介绍在IntelliJ IDEA 中如何配置Git 没有安装配置 Git 的可以参考我的这篇文章&#xff1a;安装配置 Git 一、操作环境及准备 1.win 10 2.已安装且配置了Git 3.有Gitee账户 4.安装了IntelliJ IDEA 2023.2.1 5.全程联网 二、配置步骤 2.1 配置git 1.采用全局设置&…

Pragmatic Task务实任务——指导语义通信的优化

1. 语义通信 语义通信&#xff08;Semantic Communication&#xff09;的核心理念是传递不仅仅是数据本身&#xff0c;而是数据所包含的“语义”或“意义”。这与传统通信系统不同&#xff0c;传统系统只注重如何准确、高效地传输数据&#xff0c;而语义通信则要求传输的信息能…

基于Pcap4j收发自定义协议报文(注意事项/踩坑总结)

大致内容&#xff1a;完善自定义的Cat21协议&#xff0c;补充至少5个数据类型不同的协议字段 用户输入Cat21协议字段&#xff0c;发送数据包 用户捕获Cat21数据包&#xff0c;打印输出字段值 本篇博客是直接将自定义协议报文封装在MAC帧的payload中的。 一、Cat21Packet类 1…

拓扑排序简介

拓扑排序(Topological Sort)是一种重要的图算法,用于对有向无环图(DAG, Directed Acyclic Graph)中的节点进行排序。拓扑排序的结果是一种线性序列,使得对于图中的任意一条有向边(u, v),顶点u都在顶点v之前。这种排序常用于任务调度、编译器依赖关系分析等领域。 拓…

算法题总结(八)——字符串

531、反转字符串二 给定一个字符串 s 和一个整数 k&#xff0c;从字符串开头算起&#xff0c;每计数至 2k 个字符&#xff0c;就反转这 2k 字符中的前 k 个字符。 如果剩余字符少于 k 个&#xff0c;则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个&#xff0c…

VTK有向包围盒

文章目录 一、vtkOBBTree1.1 几种树结构的对比1.2 获取线段与数据集的交点1.3 OBB树可视化1.4 对齐两个数据集1.5 圆柱形有向包围盒 本文的主要内容&#xff1a;简单介绍VTK中有向包围盒的相关功能。 主要涉及vtkOBBTree类。 哪些人适合阅读本文&#xff1a;有一定VTK基础的人。…

python全栈开发是什么?

全栈指掌握多种技能&#xff0c;并能利用多种技能独立完成产品。通俗的说就是与这项技能有关的都会&#xff0c;都能独立完成。 python&#xff0c;因为目前很火&#xff0c;能开发的项目很多。例如&#xff1a;web前端后端&#xff0c;自动化运维&#xff0c;软件、小型游戏开…

基于ssm的二手手机商城的设计与实现

文未可获取一份本项目的java源码和数据库参考。 题目简介&#xff1a; 随着时代的发展与科技的进步&#xff0c;人们的物质生活水平越来愈高&#xff0c;对智能化电子产品的需求也越来越高&#xff0c;手机就是一个很好的表现。近年来&#xff0c;随着华为、小米、vivo、ipho…

问题-python-运行报错-SyntaxError: Non-UTF-8 code starting with ‘\xd5‘ in file 汉字编码问题

​ 编码: 把字符转换成字节序列的过程。因为计算机只能处 理二进制数据&#xff0c;所以不能直接处理文本&#xff0c;需要先把文本转换为二进制数据。 解码: 把二进制数据转换成字符的过程。把接收到的数据转换成程序中使用的编码方式。 ​ 这个报错原因就是编码和解码没达成…

地理定位营销与开源AI智能名片O2O商城小程序的融合与发展

摘要&#xff1a;本文阐述地理定位营销的概念、手段及其在商业中的应用&#xff0c;探讨开源AI智能名片O2O商城小程序如何与地理定位营销相结合&#xff0c;为企业营销带来新的机遇与挑战。 一、引言 在当今数字化营销的时代&#xff0c;地理定位营销已成为一种重要的营销手段…

【C语言】分支与循环

文章目录 前言if语句关系操作符逻辑操作符&#xff1a;&& , || , &#xff01;switch语句if语句和switch语句的对比 while循环for循环do-while循环break和continue语句循环嵌套goto语句 前言 C语⾔是结构化的程序设计语⾔&#xff0c;这⾥的结构指的是顺序结构、选择&…

【GeekBand】C++设计模式笔记5_Observer_观察者模式

1. “组件协作”模式 现代软件专业分工之后的第一个结果是“框架与应用程序的划分”&#xff0c;“组件协作”模式通过晚期绑定&#xff0c;来实现框架与应用程序之间的松耦合&#xff0c;是二者之间协作时常用的模式。典型模式 Template MethodStrategyObserver / Event 2.…

D28【python 接口自动化学习】- python基础之输入输出与文件操作

day28 输入 学习日期&#xff1a;20241005 学习目标&#xff1a;输入输出与文件操作&#xfe63;-40 输入&#xff1a;如何接收用户通过键盘输入的数据&#xff1f; 学习笔记&#xff1a; 输入设备与输入方式 Input函数 命令行参数 可选参数 必填参数 强制转换参数类型 总…

认知战认知作战:2024年10月4日美国非农数据发布背景下的全球认知战分析——策略、手段与应对

认知战认知作战&#xff1a;2024年10月4日美国非农数据发布背景下的全球认知战分析——策略、手段与应对 关键词&#xff1a;认知战,非农数据,美联储,加息,信息操控,心理战,市场恐慌,虚假信息,防御方,攻击方,舆论引导,虚假数据,断章取义,金融市场,信息不对称,经济政策,虚假专家…

基金好书入门阅读笔记《基金作战笔记:从投基新手到配置高手的进阶之路》1

今年的新书《基金作战笔记&#xff1a;从投基新手到配置高手的进阶之路》&#xff0c;趁着国庆前这个风潮&#xff0c;拿来学习下。 第一章 军规 军规1&#xff1a;莫求暴富&#xff0c;为自己设定一个长期目标。 军规2&#xff1a;永不满仓&#xff0c;找到自己的资产配置中…

基于Python的自然语言处理系列(24):BiDAF(双向注意力流)

在自然语言处理领域,机器阅读理解(Machine Comprehension, MC)是一个重要的任务。在这篇博文中,我们将实现论文 BiDAF 中提出的双向注意力流模型。BiDAF 主要改进了传统注意力机制中的早期信息摘要问题,并引入了字符嵌入来加强对单词细粒度信息的理解。 1. 加载 SQuAD 数据…

在VSCode中编写Html

1.下载VSCode&#xff1a;Download Visual Studio Code - Mac, Linux, Windows 2.安装插件&#xff1a; 简体中文插件可把界面改成中文 3.打开一个文件夹&#xff1a;用于在这个文件夹内写Html 5.新建文件&#xff1a;sheet.html,按 &#xff01; tab键可以生成HTML文件标准格式…

网络基础 【HTTP】

&#x1f493;博主CSDN主页:麻辣韭菜&#x1f493;   ⏩专栏分类&#xff1a;Linux初窥门径⏪   &#x1f69a;代码仓库:Linux代码练习&#x1f69a; &#x1f4bb;操作环境&#xff1a; CentOS 7.6 华为云远程服务器 &#x1f339;关注我&#x1faf5;带你学习更多Linux知识…