今天的小结

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是一种可变长度的类型,当插入的长度小于定义长度时,插入多长就存多长。

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

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

相关文章

Qt——QLabel控件常见的属性、方法和信号

QLabel 控件常见的属性、方法和信号 一、QLabel 控件常见属性 二、QLabel 控件常见方法 三、QLabel 控件常见信号 方法&#xff1a; setxxx设置属性、去掉set就是获取属性 所有控件中的属性和方法都是通用的 QLabel 控件 描述&#xff1a;QLabel 是一个用于显示文本或图像…

C++之ifstream成员函数get、tellg、eof实例(一百八十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

Java使用 Gson 将对象转换为 JSON 字符串

在开发过程中&#xff0c;经常需要将 Java 对象转换为 JSON 字符串&#xff0c;以实现数据的序列化和传输。Gson 是一个流行的 Java 库&#xff0c;它提供了方便的方法来将对象转换为 JSON 字符串。本文将介绍使用 Gson 库的步骤&#xff0c;将一个对象转换为 JSON 字符串&…

前端实习day35

今天是下早班的一天&#xff0c;下完班直接赶车回广州了&#xff0c;吐槽一下深圳站管理得真得差&#xff0c;候车厅小&#xff0c;人巨多&#xff0c;而且进站口的标识也很少&#xff0c;绕了好久才找到&#xff01;下次再也不去了。 今天是改bug的一天&#xff0c;但是有半天…

范式 事务 多表查询

范式 概念&#xff1a;设计数据库时&#xff0c;需要遵循的一些规范。要遵循后边的范式要求&#xff0c;必须遵循前边的所有范式要求 第一范式&#xff1a; 数据库表的每一列都是不可分割的基本数据项 这样子就不满足第一范式 这样子就满足第一范式 存在问题&#xff1a; 数…

无涯教程-PHP - 返回类型声明

在PHP 7中&#xff0c;引入了一个新函数返回类型声明&#xff0c;返回类型声明指定函数应返回的值的类型&#xff0c;可以声明返回类型的以下类型。 intfloatbooleanstringinterfacesarraycallable 有效返回类型 <?phpdeclare(strict_types1);function returnIntValue(i…

Unity打包Windows程序,概率性出现无法全屏或分辨率不匹配

排除代码和Resolution and Presentation面板设置问题 如果程序还是不能按照预期的分辨率运行&#xff0c;应该是系统注册表记录了对应的设置。 解决方案&#xff1a; 打开注册表&#xff0c;使用快捷键“Win” "R"组合快捷键。在打开后面键入命令&#xff1a;Rege…

一键快速还原修复人脸,CodeFormer 助力人脸图像修复

今天在查资料的时候无意间看到了一个很有意思的工具&#xff0c;就是CodeFormer &#xff0c;作者给出来的说明是用于人脸修复任务的&#xff0c;觉得很有意思就拿来实践了一下&#xff0c;这里记录分享一下。 首先对人脸修复任务进行简单的回顾总结&#xff1a; 人脸修复是指…

关于gRPC微服务利弊之谈

gRPC微服务架构包括以下几个主要组件&#xff1a; 服务定义&#xff1a;定义服务的接口和消息格式&#xff0c;使用Protocol Buffers或其他的消息格式进行描述。服务实现&#xff1a;实现定义的服务接口和消息处理逻辑。服务器端实现&#xff1a;在服务器端&#xff0c;需要实…

分发饼干【贪心算法】

分发饼干 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff1b;并且每块饼干 j&#xff0c;都有一个…

MATLAB中符号变量的使用方法解析

简介 MATLAB中常常使用符号变量&#xff0c;这里定义符号变量的函数是syms 使用方法如下 syms x y z 其中&#xff0c;x、y、z 是符号变量&#xff0c;可以是任意字母、数字或下划线组合而成的字符串。 举例1&#xff1a; 代码 以下是一个简单的例子&#xff0c;演示如何…

爬虫入门01

1. 请求头中最常见的一些重要内容 User-Agent : 请求载体的身份标识(⽤啥发送的请求)Referer: 防盗链(这次请求是从哪个⻚⾯来的? 反爬会⽤到)cookie: 本地字符串数据信息(⽤户登录信息, 反爬的token) 2. 响应头中一些重要内容 cookie: 本地字符串数据信息(⽤户登录信息, 反…

Vue开发之父子组件

创建父子组建&#xff0c;分三步。一是创建文件&#xff0c;二是引入组建&#xff0c;三是组件间通信。在components目录下新建sub文件夹&#xff0c;用于存放一下可以复用的子组件。比如新建一个SubCon.vue组件 <template><div class"first-app">{{ ms…

【leetcode刷题之路】剑指Offer(4)——分治+排序算法+动态规划

文章目录 8 分治算法8.1 【递归】剑指 Offer 07 - 重建二叉树8.2 【递归】【快速幂】剑指 Offer 16 - 数值的整数次方8.3 【递归】剑指 Offer 33 - 二叉搜索树的后序遍历序列8.4 【递归】【分治】剑指 Offer 17 - 打印从1到最大的n位数8.5 【归并排序】【分治】剑指 Offer 51 -…

[论文阅读笔记25]A Comprehensive Survey on Graph Neural Networks

这是一篇GNN的综述, 发表于2021年的TNNLS. 这篇博客旨在对GNN的基本概念做一些记录. 论文地址: 论文 1. 引言, 背景与定义 对于图像数据来说, CNN具有平移不变性和局部连接性, 因此可以在欧氏空间上良好地学习. 然而, 对于具有图结构的数据(例如社交网络 化学分子等)就需要用…

Qt5升级到Qt6分步迁移教程

Qt框架的一个新的长期支持版本6.5最近发布。它为以前的版本引入了许多修复、改进和新功能。有些可能对您的应用程序有用&#xff08;如果不是现在&#xff0c;可能会在将来&#xff09;&#xff0c;因此最好将应用程序迁移到最新版本的框架。 仍然有许多应用程序仍在使用Qt 5&…

SpringDataRedis 使用

1. SpringDataRedis 特点2. 使用 SpringDataRedis 步骤3. 自定义 RedisTemplate 序列化4. SpringDataRedis 操作对象 1. SpringDataRedis 特点 提供了对不同 Redis 客户端的整合&#xff08;Lettuce 和 Jedis&#xff09;提供了 RedisTemplate 统一 API 来操作 Redis支持 Redi…

C++ 改善程序的具体做法 学习笔记

1、尽量用const enum inline替换#define 因为#define是做预处理操作&#xff0c;编译器从未看见该常量&#xff0c;编译器刚开始编译&#xff0c;它就被预处理器移走了&#xff0c;而#define的本质就是做替换&#xff0c;它可能从来未进入记号表 解决方法是用常量替换宏 语言…

安装VS2005时提示:请插入磁盘:visual studio 2005 DVD

安装VS2005时提示&#xff1a;请插入磁盘:visual studio 2005 DVD 修改卷标为 "DVD1"

Spring Cache的介绍以及怎么使用(redis)

Spring Cache 文章目录 Spring Cache1、Spring Cache介绍2、Spring Cache常用注解2.1、EnableCaching注解2.2、CachePut注解2.3、CacheEvict注解2.4、Cacheable注解 3、Spring Cache使用方式--redis 1、Spring Cache介绍 Spring Cache是一个框架&#xff0c;实现了基于注解的缓…