今天的小结

news/2025/2/13 21:24:21/

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.ppmy.cn/news/1070858.html

相关文章

为什么劝年轻人不要频繁跳槽?

这是一个让很多年轻人犯愁的问题&#xff0c;尤其是在现如今竞争激烈的职场环境中。许多年轻人因为各种原因选择频繁跳槽&#xff0c;但是在我看来&#xff0c;这并不是一个明智的选择。下面就让我们来看看为什么劝年轻人不要频繁跳槽。 1. 错失成长机会 每一个工作都有其独特…

博流RISC-V芯片JTAG debug配置与运行

文章目录 1、Windows下安装与配置2、Linux下安装与配置3、芯片默认 JTAG PIN 列表4、命令行运行JTAG5、Eclipse下使用JTAG 1、Windows下安装与配置 CKLink 驱动安装 Windows版驱动下载地址&#xff1a; https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1666331…

docker 04.更加重要的命令

之前的都是基础命令&#xff0c; 前台交互进程和后台守护进程&#xff1a; 重新进入容器&#xff1a; docker中的导入导出&#xff1a; docker中的拷贝到&#xff1a;

leetcode 496. 下一个更大元素 I

2023.8.28 这题提供暴力解法和单调栈法两种方法。 暴力解&#xff1a; class Solution { public:vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {vector<int> ans(nums1.size(),-1);for(int i0; i<nums1.size…

asp、jsp环境安装

文章目录 phpasp安装环境打开asp大马 aspx修改配置打开aspx大马 jsp安装环境打开jsp大马 jspx php 在github下载138shell文件夹&#xff0c;解压后放入win10虚拟机&#xff0c;然后安装phpstudy&#xff08;在这里不再演示&#xff09;&#xff0c;并将php大马文件放在C:\phpS…

数据结构:八种数据结构大全

数据结构 1.1 数据结构概述 数据结构是计算机存储、组织数据的方式&#xff1b;通常情况下&#xff0c;精心选择的数据结构可以带来更高的运行或者存储效率。数据结构的优良将直接影响着我们程序的性能&#xff1b;常用的数据结构有&#xff1a;数组&#xff08;Array&#xff…

[python]问题:pandas处理excel,选中特定的sheet

要使用pandas处理Excel文件并选中特定的sheet,首先需要安装pandas和openpyxl库。可以使用以下命令进行安装: pip install pandas openpyxl然后,可以使用以下代码读取Excel文件中的特定sheet: import pandas as pd# 读取Excel文件 file_path = your_excel_file.xlsx sheet…

JavaIO流

JavaIO流 一、概念二、File类三、File类的使用1、File文件/文件夹类的创建2、File类的获取操作3、File类判断操作 - boolean4、File类对文件/文件夹的增删改5、File类的获取子文件夹以及子文件的方法 四、Java中IO流多种维度的维度1、按照流向 - Java程序2、按照流的大小分类3、…