当前位置: 首页 > news >正文

今天的小结

1、冒泡排序

冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地遍历待排序的元素列表,比较相邻的元素并交换它们的位置,直到整个列表排序完成。冒泡排序的基本思想是通过不断交换相邻元素,将最大(或最小)的元素逐渐 “冒泡” 到列表的一端。

冒泡排序的基本步骤:

  • 从列表的第一个元素开始,比较它与下一个元素的大小。

  • 如果当前元素大于下一个元素,则交换它们的位置,使较大的元素 “冒泡” 到列表的末尾。

  • 继续比较和交换相邻元素,直到达到列表的末尾。

  • 重复上述步骤,直到整个列表排序完成。

每次比较两个相邻的元素,并且按照升序或者降序的规则进行位置的替换,需要使用到双层循环遍历,每遍历一圈只会对对一个数值进行排序,总共需要遍历n-1次;

稳定性:稳定,不会对数值相同的两个元素交换位置;

  • 时间复杂度:O(n2);

  • 空间复杂度:1

  • 使用情况:适合数据量较小的情况;

package com.ma.冒泡;import java.util.Arrays;
import java.util.Scanner;
//随机输入10个数字进行排序
public class Test1 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int[] a = new int[10];for (int i = 0; i < a.length; i++) {a[i] = sc.nextInt();}for (int i = 0; i < a.length - 1; i++) {for (int j = 0; j < a.length - 1 - i; j++) {int tmp = 0;if (a[j] > a[j + 1]) {tmp = a[j];a[j] = a[j + 1];a[j + 1] = tmp;}}}System.out.println(Arrays.toString(a));}
}

2、快速排序

快速排序(Quick Sort)是一种常用且高效的排序算法,它采用分治的思想。快速排序的基本思想是选择一个基准元素,将列表中的元素分割为两部分,使得左边部分的所有元素小于基准元素,右边部分的所有元素大于基准元素,然后对这两部分分别进行递归排序。

快速排序的基本步骤:

  • 选择一个基准元素。通常可以选择列表的第一个元素、最后一个元素或随机选择。

  • 将列表分割为两部分,使得左边部分的所有元素小于基准元素,右边部分的所有元素大于基准元素。这个过程称为分区(partitioning)。

  • 对分割后的两部分递归地应用快速排序算法。即分别对左边部分和右边部分进行快速排序。

  • 合并排序后的左右两部分,得到最终排序结果。

快速排序的平均时间复杂度是 O(n log n),其中 n 是待排序列表的长度。尽管快速排序在大多数情况下表现良好,但在最坏情况下,时间复杂度为 O(n^2)。快速排序是一种常用的排序算法,被广泛应用于各种编程环境和场景中。

  • 稳定性:不稳定,数值相同的两个元素可能交换位置;

  • 时间复杂度:O(nlogn),如果基数刚好为最大或者最小值则为O(n2);

    快速排序最好时间复杂度是O(n * log n),最坏时间复杂度是O(n*2) ,平均复杂度是O(n * log n)

  • 空间复杂度:O(nlogn),如果基数刚好为最大或者最小值则为O(n);

  • 使用情况:适合数据量较小的情况;

package com.ma.快排;import java.util.Arrays;public class Test3 {public static void main(String[] args) {int[] arr = {-9, 78, 0, 0, 1, 0, 3, -1, 23, -56, 7};quickSort(arr, 0, arr.length - 1);System.out.println(Arrays.toString(arr));}public static void quickSort(int[] array, int low, int high) {/*** 分析:* 1.选定一个基准值,array[low]* 2.右指针从右向左遍历high--,查找比基准值小的数据,左指针从左向右low++,查找比基准值大的数据* 3.如果指针未相遇,交换左右两值位置,如果指针相遇,则替换基准值的位置* 4.左递归,右递归*/// 方法退出条件,指针相遇或错过if (low >= high) {return;}// 1. 指定基准值和左右指针记录位置int pivot = array[low];int l = low;int r = high;int temp = 0;// 2. 遍历条件,左右指针位置while (l < r) {// 2.1 右侧遍历while (l < r && array[r] >= pivot) {r--;}// 2.2 左侧遍历while (l < r && array[l] <= pivot) {l++;}// 2.3 l指针还在r指针左侧,尚未相遇if (l < r) {temp = array[l];array[l] = array[r];array[r] = temp;}}// 3. 当左右指针相遇,交换基准值位置array[low] = array[l];array[l] = pivot;// 4. 根据条件左侧递归遍历if (low < l) {quickSort(array, low, l - 1);}// 5. 根据条件右侧递归遍历if (r < high) {quickSort(array, r + 1, high);}}}

yaml和xml的区别:

YAML不那么冗长。 没有所有的括号,信噪比更高。 这使得许多人阅读和编辑的主观上更容易。 另一方面,它稍微难以parsing。

但是最大的区别在于,XML是一种标记语言,而YAML实际上更像是一种数据格式。 在YAML中,表示简单的,分层的数据往往会更加优雅,但实际标记的文本很难performance。

YAML不比XML冗长; 然而,YAML只是为了数据,并不是技术上的标记语言( Y AML A int M arkup L语言)。

VARCHAR 和 CHAR有什么区别?

比CHAR更加灵活,VARCHAR可以保存可变长度的字符串,而CHAR不能。VARCHAR和CHAR同样用于表示字符数据。

char是一种固定长度的类型,无论储存的数据有多少都会固定长度,如果插入的长度小于定义长度,则可以用空格进行填充。而varchar是一种可变长度的类型,当插入的长度小于定义长度时,插入多长就存多长。

相关文章:

今天的小结

1、冒泡排序 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法&#xff0c;它重复地遍历待排序的元素列表&#xff0c;比较相邻的元素并交换它们的位置&#xff0c;直到整个列表排序完成。冒泡排序的基本思想是通过不断交换相邻元素&#xff0c;将最大&#…...

了解 Socks 协议:它的过去、现在与未来

在网络世界的江湖中&#xff0c;有一名叫做 Socks 协议的高手&#xff0c;它凭借着一招“代理”绝技&#xff0c;在网络安全领域独步天下。今天&#xff0c;就让我们来了解一下这位神秘高手的过去、现在和未来。 在过去&#xff0c;互联网世界的江湖可谓是风起云涌&#xff0c;…...

小谈静态类和单例模式

静态类&#xff08;Static Class&#xff09;和单例&#xff08;Singleton&#xff09;都是在编程中用于实现特定类型的设计模式或代码组织方式。它们在不同的情境下有不同的用途和特点。 静态类&#xff08;Static Class&#xff09; 静态类是一种类&#xff0c;它的方法和属…...

​LeetCode解法汇总823. 带因子的二叉树

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 描述&#xff1a; 给出一个含…...

TypeScript的变量声明的各种方式

TypeScript是一种静态类型的JavaScript超集&#xff0c;它为JavaScript代码提供了类型检查和更好的代码组织结构。在TypeScript中&#xff0c;变量声明是非常重要的&#xff0c;因为它们定义了变量的类型和范围。本文将详细介绍TypeScript的变量声明&#xff0c;并通过代码案例…...

c++ lambda

Lambda Lambda 表达式一般用于定义匿名函数&#xff0c;使得代码更加灵活简洁&#xff0c;优点&#xff1a; 声明式编程风格&#xff1a;就地匿名定义目标函数或函数对象&#xff0c;不需要额外写一个命名函数或者函数对象。以更直接的方式去写程序&#xff0c;好的可读性和可…...

泊松回归和地理加权泊松回归

01 泊松回归 泊松回归(Poisson Regression)是一种广义线性模型,用于建立离散型响应变量(计数数据)与一个或多个预测变量之间的关系。它以法国数学家西蒙丹尼泊松(Simon Denis Poisson)的名字命名,适用于计算“事件发生次数”的概率,比如交通事故发生次数、产品缺陷数…...

【数学建模竞赛】各类题型及解题方案

评价类赛题建模流程及总结 建模步骤 建立评价指标->评价体系->同向化处理&#xff08;都越多越好或越少越少&#xff09;->指标无量纲处理 ->权重-> 主客观->合成 主客观评价问题的区别 主客观概念主要是在指标定权时来划分的。主观评价与客观评价的区别…...

【12期】谈一谈redis两种持久化机制的区别?

Redis两类持续性的方法 RDB方案可以在规定时间间隔内创建数据集的时间点快照。 AOF方案记录了服务器执行的所有写操作命令&#xff0c;并在服务器启动时通过重新执行这些命令来还原数据集。AOF文件完全遵循Redis协议格式保存&#xff0c;新命令会被追加到文件末尾。此外&#…...

Lambda 编程(Kotlin)一

学习记录&#xff0c;以下为个人理解 知识点&#xff1a; Lambda的定义&#xff1a;允许你把代码块当作参数传递给函数Lambda的语法约定&#xff1a;如果lambda 表达式是函数调用的最后一个实参&#xff0c;它可以放到括号的外边当lambda表达式时函数唯一的实参时&#xff0c…...

网络字节序——TCP接口及其实现简单TCP服务器

网络字节序——TCP接口及其实现简单TCP服务器 文章目录 网络字节序——TCP接口及其实现简单TCP服务器简单TCP服务器的实现1. 单进程版&#xff1a;客户端串行版2. 多进程版&#xff1a;客户端并行版netstat查看网络信息3.多线程版&#xff1a;并行执行log.hpp 守护进程fg、bg s…...

RxJS如何根据事件创建Observable对象?

RxJS提供了一些用来创建Observable对象的函数&#xff0c;我们可以根据事件、定时器、Promise&#xff0c;AJAX等来创建Observable对象。 下面是根据事件创建Observable对象的几个例子。 this.outsideClick$ fromEvent(document, click).subscribe((event: MouseEvent) > …...

网站常见安全漏洞 | 青训营

Powered by:NEFU AB-IN 文章目录 网站常见安全漏洞 | 青训营 网站基本组成及漏洞定义服务端漏洞SQL注入命令执行越权漏洞SSRF文件上传漏洞 客户端漏洞开放重定向XSSCSRF点击劫持CORS跨域配置错误WebSocket 网站常见安全漏洞 | 青训营 网站常见安全漏洞-网站基本组成及漏洞定义…...

vue2使用 vis-network 和 vue-vis-network 插件封装一个公用的关联关系图

效果图&#xff1a; vis组件库&#xff1a;vis.js vis-network中文文档&#xff1a;vis-network 安装组件库&#xff1a; npm install vis-network vue-vis-network 或 yarn add vis-network vue-vis-network 新建RelationGraph.vue文件&#xff1a; <template><…...

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。

LeetCode第73题矩阵置零 1.思路&#xff1a; 想到一个开辟一点空间来解决方法&#xff0c;使用哈希集。就是使用一个哈希集&#xff08;row和col&#xff09;来储存数组中的元素为0的下标。然后再遍历&#xff0c;整个二维数组&#xff0c;在哈希集中存在对应的下标&#xff0c…...

java-初识Servlet,Tomcat,JDBC

文章目录 前言一、ServletServlet 生命周期Servlet 实例Servlet 过滤器 二、TomcatJDBCJDBC连接数据库实例 总结 前言 java入门须知的重要概念/名词/技术 等 一、Servlet Servlet是Java Web开发中的一个核心组件&#xff0c;它是基于Java语言编写的服务器端程序&#xff0c;…...

SpringBoot+mybatis+pgsql多个数据源配置

一、配置文件 jdk环境&#xff1a;1.8 配置了双数据源springbootdruidpgsql&#xff0c;application.properties配置修改如下&#xff1a; #当前入库主数据库 spring.primary.datasource.typecom.alibaba.druid.pool.DruidDataSource spring.primary.datasource.driver-class…...

视频汇聚/视频监控管理平台EasyCVR接入海康SDK协议后无法播放该如何解决?

开源EasyDarwin视频监控/安防监控/视频汇聚EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;在视频监控播放上&#xff0c;视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放&#xff0c;可同时播放多路视频流&#…...

MQ消息队列(主要介绍RabbitMQ)

消息队列概念&#xff1a;是在消息的传输过程中保存消息的容器。 作用&#xff1a;异步处理、应用解耦、流量控制..... RabbitMQ&#xff1a; SpringBoot继承RabbitMQ步骤&#xff1a; 1.加入依赖 <dependency><groupId>org.springframework.boot</groupId&g…...

2023年7月天猫糕点市场数据分析(天猫数据怎么看)

烘焙食品行业是近几年食品领域比较火热的赛道之一&#xff0c;随着居民饮食结构的变化&#xff0c;人均消费水平的上升&#xff0c;蛋糕、面包等烘焙糕点越发成为消费者饮食的重要组成部分。同时&#xff0c;在烘焙糕点市场中&#xff0c;老品牌不断推新迭变&#xff0c;新品牌…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...