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

算法02-各种排序算法

各种常见排序算法总结

一. 冒泡排序 (Bubble Sort)

冒泡排序是一种简单的排序算法。它重复地遍历要排序的列表,比较相邻的元素,并交换它们的位置,直到整个列表排序完成。

A、说明:

特点:
  • 通过不断交换相邻元素,将最大(或最小)的元素“冒泡”到数组的一端。
优点:
  • 实现简单,代码容易理解。
  • 对于小规模数据表现较好。
缺点:
  • 时间复杂度较高,不适合大规模数据。
  • 交换操作较多,效率低。
时间复杂度:
  • 最好情况:O(n)(已经有序)
  • 最坏情况:O(n²)
  • 平均情况:O(n²)
空间复杂度:
  • O(1)(原地排序)
稳定性:
  • 稳定

B、步骤:

  1. 从列表的第一个元素开始,比较相邻的两个元素。

  2. 如果前一个元素比后一个元素大,交换它们的位置。

  3. 继续遍历列表,直到没有需要交换的元素。

C、示例代码

def bubble_sort(arr):n = len(arr)for i in range(n):for j in range(0, n-i-1):if arr[j] > arr[j+1]:arr[j], arr[j+1] = arr[j+1], arr[j]return arr# 示例
arr = [64, 34, 25, 12, 22, 11, 90]
print("排序前:", arr)
print("排序后:", bubble_sort(arr))

二、选择排序 (Selection Sort)

选择排序是一种简单直观的排序算法。它的工作原理是每次从未排序的部分中选择最小(或最大)的元素,放到已排序部分的末尾。

A、说明:

特点:
  • 每次从未排序部分选择最小(或最大)的元素,放到已排序部分的末尾。
优点:
  • 实现简单。
  • 不占用额外空间。
缺点:
  • 时间复杂度较高,不适合大规模数据。
  • 不稳定(可能改变相同元素的相对顺序)。
时间复杂度:
  • 最好情况:O(n²)
  • 最坏情况:O(n²)
  • 平均情况:O(n²)
空间复杂度:
  • O(1)(原地排序)
稳定性:
  • 不稳定

B、步骤:

  1. 在未排序部分中找到最小元素。

  2. 将最小元素与未排序部分的第一个元素交换。

  3. 重复上述步骤,直到所有元素排序完成。

C、示例代码

def selection_sort(arr):n = len(arr)for i in range(n):min_idx = ifor j in range(i+1, n):if arr[j] < arr[min_idx]:min_idx = jarr[i], arr[min_idx] = arr[min_idx], arr[i]return arr# 示例
arr = [64, 25, 12, 22, 11]
print("排序前:", arr)
print("排序后:", selection_sort(arr))

三、插入排序 (Insertion Sort)

插入排序是一种简单直观的排序算法。它的工作原理是将未排序部分的元素逐个插入到已排序部分的适当位置。

A、说明:

特点:
  • 将未排序部分的元素逐个插入到已排序部分的正确位置。
优点:
  • 对于小规模或基本有序的数据效率较高。
  • 实现简单。
缺点:
  • 时间复杂度较高,不适合大规模数据。
  • 数据移动较多。
时间复杂度:
  • 最好情况:O(n)(已经有序)
  • 最坏情况:O(n²)
  • 平均情况:O(n²)
空间复杂度:
  • O(1)(原地排序)
稳定性:
  • 稳定

B、步骤:

  1. 从第一个元素开始,该元素可以认为已经被排序。

  2. 取出下一个元素,在已经排序的元素序列中从后向前扫描。

  3. 如果该元素(已排序)大于新元素,将该元素移到下一位置。

  4. 重复步骤3,直到找到已排序的元素小于或等于新元素的位置。

  5. 将新元素插入到该位置后。

  6. 重复步骤2~5。

C、示例代码:

def insertion_sort(arr):for i in range(1, len(arr)):key = arr[i]j = i-1while j >= 0 and key < arr[j]:arr[j+1] = arr[j]j -= 1arr[j+1] = keyreturn arr# 示例
arr = [12, 11, 13, 5, 6]
print("排序前:", arr)
print("排序后:", insertion_sort(arr))

四、快速排序 (Quick Sort)

快速排序是一种高效的排序算法,采用分治法策略。它通过选择一个“基准”元素,将数组分为两部分,一部分比基准小,另一部分比基准大,然后递归地对这两部分进行排序。

A、说明:

特点:
  • 采用分治法,选择一个基准元素,将数组分为两部分,左边小于基准,右边大于基准,然后递归排序。
优点:
  • 平均情况下效率非常高。
  • 适合大规模数据。
缺点:
  • 最坏情况下时间复杂度较高(O(n²))。
  • 不稳定。
时间复杂度:
  • 最好情况:O(n log n)
  • 最坏情况:O(n²)(当数组已经有序时)
  • 平均情况:O(n log n)
空间复杂度:
  • O(log n)(递归栈空间)
稳定性:
  • 不稳定

B、步骤:

  1. 选择一个基准元素。

  2. 将数组分为两部分:一部分比基准小,另一部分比基准大。

  3. 递归地对这两部分进行快速排序。

C、示例代码:

def quick_sort(arr):if len(arr) <= 1:return arrpivot = arr[len(arr) // 2]left = [x for x in arr if x < pivot]middle = [x for x in arr if x == pivot]right = [x for x in arr if x > pivot]return quick_sort(left) + middle + quick_sort(right)# 示例
arr = [10, 7, 8, 9, 1, 5]
print("排序前:", arr)
print("排序后:", quick_sort(arr))

五、归并排序 (Merge Sort)

归并排序是一种稳定的排序算法,采用分治法策略。它将数组分成两半,分别对它们进行排序,然后将排序后的两半合并。

A、说明:

特点:
  • 采用分治法,将数组分成两部分,分别排序后合并。
优点:
  • 时间复杂度稳定,适合大规模数据。
  • 稳定排序。
缺点:
  • 需要额外的存储空间。
  • 对于小规模数据效率不如插入排序。
时间复杂度:
  • 最好情况:O(n log n)
  • 最坏情况:O(n log n)
  • 平均情况:O(n log n)
空间复杂度:
  • O(n)(需要额外的数组空间)
稳定性:
  • 稳定

B、步骤:

  1. 将数组分成两半。

  2. 递归地对每一半进行归并排序。

  3. 将排序后的两半合并。

C、示例代码:

def merge_sort(arr):if len(arr) <= 1:return arrmid = len(arr) // 2left = merge_sort(arr[:mid])right = merge_sort(arr[mid:])return merge(left, right)def merge(left, right):result = []i = j = 0while i < len(left) and j < len(right):if left[i] < right[j]:result.append(left[i])i += 1else:result.append(right[j])j += 1result.extend(left[i:])result.extend(right[j:])return result# 示例
arr = [38, 27, 43, 3, 9, 82, 10]
print("排序前:", arr)
print("排序后:", merge_sort(arr))

六、堆排序 (Heap Sort)

堆排序是一种基于二叉堆的排序算法。它首先将数组构建成一个最大堆,然后逐步将堆顶元素(最大值)与堆的最后一个元素交换,并调整堆,直到整个数组排序完成。

A、说明:

特点:
  • 利用堆数据结构,将数组构建成最大堆(或最小堆),然后逐个取出堆顶元素。
优点:
  • 时间复杂度稳定,适合大规模数据。
  • 不占用额外空间(原地排序)。
缺点:
  • 不稳定。
  • 实现较复杂。
时间复杂度:
  • 最好情况:O(n log n)
  • 最坏情况:O(n log n)
  • 平均情况:O(n log n)
空间复杂度:
  • O(1)(原地排序)
稳定性:
  • 不稳定

B、步骤:

  1. 构建一个最大堆。

  2. 将堆顶元素(最大值)与堆的最后一个元素交换。

  3. 调整堆,使其重新成为最大堆。

  4. 重复步骤2~3,直到堆的大小为1。

C、示例代码:

def heapify(arr, n, i):largest = ileft = 2 * i + 1right = 2 * i + 2if left < n and arr[i] < arr[left]:largest = leftif right < n and arr[largest] < arr[right]:largest = rightif largest != i:arr[i], arr[largest] = arr[largest], arr[i]heapify(arr, n, largest)def heap_sort(arr):n = len(arr)for i in range(n // 2 - 1, -1, -1):heapify(arr, n, i)for i in range(n-1, 0, -1):arr[i], arr[0] = arr[0], arr[i]heapify(arr, i, 0)return arr# 示例
arr = [12, 11, 13, 5, 6, 7]
print("排序前:", arr)
print("排序后:", heap_sort(arr))

七、希尔排序 (Shell Sort)

希尔排序是插入排序的一种高效改进版本。它通过将数组分成若干个子序列,分别进行插入排序,然后逐步缩小子序列的间隔,最终完成排序。

A、说明:

特点:
  • 是插入排序的改进版,通过分组插入排序,逐步缩小分组间隔。
优点:
  • 对于中等规模数据效率较高。
  • 比插入排序更快。
缺点:
  • 时间复杂度依赖于增量序列的选择。
  • 不稳定。
时间复杂度:
  • 最好情况:O(n log n)
  • 最坏情况:O(n²)
  • 平均情况:取决于增量序列
空间复杂度:
  • O(1)(原地排序)
稳定性:
  • 不稳定

B、步骤:

  1. 选择一个增量序列(例如,n/2, n/4, …, 1)。

  2. 对每个增量进行插入排序。

  3. 逐步缩小增量,直到增量为1。

C、示例代码:

def shell_sort(arr):n = len(arr)gap = n // 2while gap > 0:for i in range(gap, n):temp = arr[i]j = iwhile j >= gap and arr[j - gap] > temp:arr[j] = arr[j - gap]j -= gaparr[j] = tempgap //= 2return arr# 示例
arr = [12, 34, 54, 2, 3]
print("排序前:", arr)
print("排序后:", shell_sort(arr))

八、计数排序 (Counting Sort)

计数排序是一种非比较排序算法,适用于整数排序。它通过统计每个元素的出现次数,然后根据统计结果将元素放回正确的位置。

A、说明:

特点:
  • 适用于整数排序,通过统计每个元素的出现次数,然后依次输出。
优点:
  • 时间复杂度低,适合数据范围较小的整数排序。
缺点:
  • 需要额外的存储空间。
  • 只适用于整数排序。
时间复杂度:
  • 最好情况:O(n + k)(k是数据范围)
  • 最坏情况:O(n + k)
  • 平均情况:O(n + k)
空间复杂度:
  • O(k)(需要额外的计数数组)
稳定性:
  • 稳定

B、步骤:

  1. 统计每个元素的出现次数。

  2. 计算每个元素在排序后数组中的位置。

  3. 将元素放回正确的位置。

C、示例代码:

def counting_sort(arr):max_val = max(arr)count = [0] * (max_val + 1)for num in arr:count[num] += 1sorted_arr = []for i in range(len(count)):sorted_arr.extend([i] * count[i])return sorted_arr# 示例
arr = [4, 2, 2, 8, 3, 3, 1]
print("排序前:", arr)
print("排序后:", counting_sort(arr))

九、桶排序 (Bucket Sort)

桶排序是一种分布式排序算法,它将元素分到若干个桶中,每个桶分别进行排序,最后将桶中的元素合并。

A、说明:

特点:
  • 将数据分到多个桶中,每个桶单独排序,最后合并。
优点:
  • 适合数据分布均匀的情况。
  • 时间复杂度较低。
缺点:
  • 需要额外的存储空间。
  • 数据分布不均匀时效率下降。
时间复杂度:
  • 最好情况:O(n + k)(k是桶的数量)
  • 最坏情况:O(n²)
  • 平均情况:O(n + k)
空间复杂度:
  • O(n + k)(需要额外的桶空间)
稳定性:
  • 稳定

B、步骤:

  1. 将元素分到若干个桶中。

  2. 对每个桶中的元素进行排序。

  3. 将桶中的元素合并。

C、示例代码:

def bucket_sort(arr):max_val = max(arr)min_val = min(arr)bucket_range = (max_val - min_val) / len(arr)buckets = [[] for _ in range(len(arr))]for num in arr:index = int((num - min_val) // bucket_range)if index != len(arr):buckets[index].append(num)else:buckets[-1].append(num)sorted_arr = []for bucket in buckets:sorted_arr.extend(sorted(bucket))return sorted_arr# 示例
arr = [0.42, 0.32, 0.33, 0.52, 0.37, 0.47, 0.51]
print("排序前:", arr)
print("排序后:", bucket_sort(arr))

十、基数排序 (Radix Sort)

基数排序是一种非比较排序算法,它通过将整数按位数切割成不同的数字,然后按每个位数分别进行排序。

A、说明:

特点:
  • 按照位数从低到高(或从高到低)依次排序。
优点:
  • 适合整数或字符串排序。
  • 时间复杂度较低。
缺点:
  • 需要额外的存储空间。
  • 只适用于整数或字符串排序。
时间复杂度:
  • 最好情况:O(n × k)(k是最大位数)
  • 最坏情况:O(n × k)
  • 平均情况:O(n × k)
空间复杂度:
  • O(n + k)(需要额外的桶空间)
稳定性:
  • 稳定

B、步骤:

  1. 找到数组中的最大数,确定最大位数。

  2. 从最低位开始,对数组进行计数排序。

  3. 重复步骤2,直到最高位。

C、示例代码:

def counting_sort_for_radix(arr, exp):n = len(arr)output = [0] * ncount = [0] * 10for i in range(n):index = arr[i] // expcount[index % 10] += 1for i in range(1, 10):count[i] += count[i - 1]i = n - 1while i >= 0:index = arr[i] // expoutput[count[index % 10] - 1] = arr[i]count[index % 10] -= 1i -= 1for i in range(n):arr[i] = output[i]def radix_sort(arr):max_val = max(arr)exp = 1while max_val // exp > 0:counting_sort_for_radix(arr, exp)exp *= 10return arr# 示例
arr = [170, 45, 75, 90, 802, 24, 2, 66]
print("排序前:", arr)
print("排序后:", radix_sort(arr))

十一、总结对比:

排序算法最好时间复杂度最坏时间复杂度平均时间复杂度空间复杂度稳定性优点缺点适用场景
冒泡排序(O(n))(O(n^2))(O(n^2))(O(1))稳定实现简单,适合小规模数据效率低,不适合大规模数据小规模数据
选择排序(O(n^2))(O(n^2))(O(n^2))(O(1))不稳定实现简单,不占用额外空间效率低,不适合大规模数据小规模数据
插入排序(O(n))(O(n^2))(O(n^2))(O(1))稳定对小规模数据或基本有序数据效率高效率低,不适合大规模数据小规模或基本有序数据
快速排序(O(n \log n))(O(n^2))(O(n \log n))(O(\log n))不稳定平均情况下效率高,适合大规模数据最坏情况下效率低(如数据已经有序)大规模数据
归并排序(O(n \log n))(O(n \log n))(O(n \log n))(O(n))稳定时间复杂度稳定,适合大规模数据需要额外空间,对小规模数据效率不如插入排序大规模数据
堆排序(O(n \log n))(O(n \log n))(O(n \log n))(O(1))不稳定时间复杂度稳定,适合大规模数据实现较复杂,不稳定大规模数据
希尔排序(O(n \log n))(O(n^2))(O(n \log n))(O(1))不稳定对小规模数据效率较高,比插入排序更快时间复杂度依赖于增量序列的选择中等规模数据
计数排序(O(n + k))(O(n + k))(O(n + k))(O(n + k))稳定时间复杂度低,适合数据范围较小的整数排序需要额外空间,仅适用于整数数据范围较小的整数排序
桶排序(O(n + k))(O(n^2))(O(n + k))(O(n + k))稳定适合数据分布均匀的情况需要额外空间,对数据分布不均匀的情况效率低数据分布均匀的情况
基数排序(O(n \times k))(O(n \times k))(O(n \times k))(O(n + k))稳定适合整数排序,尤其是位数较少的情况需要额外空间,仅适用于整数整数或字符串排序

© 著作权归作者所有

相关文章:

算法02-各种排序算法

各种常见排序算法总结 一. 冒泡排序 (Bubble Sort) 冒泡排序是一种简单的排序算法。它重复地遍历要排序的列表&#xff0c;比较相邻的元素&#xff0c;并交换它们的位置&#xff0c;直到整个列表排序完成。 A、说明&#xff1a; 特点&#xff1a; 通过不断交换相邻元素&am…...

python基础入门:8.1项目1:爬虫与数据分析

Python爬虫与数据分析全流程实战&#xff1a;从数据采集到可视化呈现 # 综合案例&#xff1a;电商价格监控分析系统 import requests from bs4 import BeautifulSoup import pandas as pd import matplotlib.pyplot as plt# 配置参数 HEADERS {User-Agent: Mozilla/5.0 (Wind…...

git 克隆指定 tag 的项目

git 克隆指定 tag 的项目 一、克隆指定tag的项目二、验证克隆结果 一、克隆指定tag的项目 以 tinyxml2项目 为例说明&#xff1a; git clone --branch V10.0.0 https://github.com/leethomason/tinyxml2.git解释&#xff1a; git clone&#xff1a;这是克隆一个远程仓库的命…...

DeepSeek学习笔记之——初识DeepSeek

春节假期回来已经有一周时间了&#xff0c;这假期综合症的症状是一点没减~~~ 假期期间除了这个欢乐详和的节日气氛&#xff0c;就数DeepSeek最火热了&#xff01;&#xff01;&#xff01; 什么是DeepSeek? DeepSeek是一款由国内人工智能公司研发的大型语言模型&#xff0c;…...

Linux 调用可执行程序

Linux 调用可执行程序 1. system() 函数1.1 system() 函数的声明1.2 system() 函数的不同场景返回值1.3 system() 函数的代码示例 2. exec() 函数族2.1 exec() 函数族的声明2.2 exec() 函数族执行失败的情况2.3 exec() 函数族的代码示例 3. exec() 与 system() 的区别以及使用注…...

MVCC面试怎么答

说到mvcc这个比较抽象的概念&#xff0c;很多人都有点束手无策。因为它实际上偏理论&#xff0c;实际应用中很难用到。但在面试中出现频率又很高&#xff0c;一问大部分都G。所以怎么精简回答并且能抓住重点就很关键了。往上详细解说MVCC的太多了&#xff0c;我这里没那么多废话…...

用Go实现 SSE 实时推送消息(消息通知)——思悟项目技术4

目录 简介 工作原理 例子 使用场景 简介 SSE&#xff08;Server - Sent Events&#xff09;是一种允许服务器向客户端实时推送更新的 Web 技术。是一种基于 HTTP 协议的单向通信机制&#xff0c;服务器可以在客户端建立连接后&#xff0c;持续不断地向客户端发送事件流。客…...

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 0基础…...

vue3:动态渲染后端返回的图片

问&#xff1a; div classleft-png 这里我用css设置了他的背景图片&#xff0c;但是现在我希望改为后端返回的图片&#xff0c;怎么写&#xff1f; 后端返回数据&#xff1a; const centerdata {img:;xxxx,title,xxxx,num:xxxx}&#xff1f; 回答&#xff1a; 好的&#xff…...

DeepSeek小白初识指南

1.什么是DeepSeek&#xff1f; DeepSeek是一个基于大语言模型&#xff08;LLM&#xff09;的智能助手&#xff0c;能够处理自然语言理解、生成、对话等任务。它广泛应用于聊天机器人、内容生成、数据分析等领域。 2.DeepSeek和OpenAI等大模型差异&#xff1f; 虽然DeepSeek和Op…...

图像锐化(QT)

如果不使用OpenCV&#xff0c;我们可以直接使用Qt的QImage类对图像进行像素级操作来实现锐化。锐化算法的核心是通过卷积核&#xff08;如拉普拉斯核&#xff09;对图像进行处理&#xff0c;增强图像的边缘和细节。 以下是一个完整的Qt应用程序示例&#xff0c;展示如何使用Qt…...

38.社区信息管理系统(基于springboothtml)

目录 1.系统的受众说明 2.需求分析及相关技术 2.1设计目的 2.2社区信息管理系统的特点 2.3可行性分析 2.3.1技术可行性 2.3.2运行可行性 2.4系统设计 2.4.1系统功能分析 2.4.2管理员权限功能设计 2.4.3业主权限功能设计 2.5系统的技术介绍 2.5.1 Html 2.5.2 Aja…...

游戏引擎学习第98天

仓库:https://gitee.com/mrxiao_com/2d_game_2 开始进行一点回顾 今天的目标是继续实现正常贴图的操作&#xff0c;尽管目前我们还没有足够的光照信息来使其完全有用。昨日完成了正常贴图相关的基础工作&#xff0c;接下来将集中精力实现正常贴图的基本操作&#xff0c;并准备…...

音频知识基础

音频知识基础 声音属性声音度量人耳特性通道数音频数字化传输接口 声音属性 响度 响度是人耳对声音强弱的主观感受&#xff1b; 主要和声波的振幅相关&#xff0c;同时也和频率有一定关系&#xff1b; 音调 音调是人耳对声音高低的主观感受&#xff1b; 主要与频率相关&#…...

【AI赋能】蓝耘智算平台实战指南:3步构建企业级DeepSeek智能助手

蓝耘智算平台实战指南&#xff1a;3步构建企业级DeepSeek智能助手 引言&#xff1a;AI大模型时代的算力革命 在2025年全球AI技术峰会上&#xff0c;DeepSeek-R1凭借其开源架构与实时推理能力&#xff0c;成为首个通过图灵测试的中文大模型。该模型在语言理解、跨模态交互等维…...

LabVIEW无人机飞行状态监测系统

近年来&#xff0c;无人机在农业植保、电力巡检、应急救灾等多个领域得到了广泛应用。然而&#xff0c;传统的目视操控方式仍然存在以下三大问题&#xff1a; 飞行姿态的感知主要依赖操作者的经验&#xff1b; 飞行中突发的姿态异常难以及时发现&#xff1b; 飞行数据缺乏系统…...

DeepSeek模型架构及优化内容

DeepSeek v1版本 模型结构 DeepSeek LLM基本上遵循LLaMA的设计&#xff1a; 采⽤Pre-Norm结构&#xff0c;并使⽤RMSNorm函数. 利⽤SwiGLU作为Feed-Forward Network&#xff08;FFN&#xff09;的激活函数&#xff0c;中间层维度为8/3. 去除绝对位置编码&#xff0c;采⽤了…...

html语义化

常见语义化标签有&#xff1a; &#xff08;1&#xff09;页面结构标签&#xff1a;<header>、<nav>、<main>、<article>、<section>、<aside>、<footer> &#xff08;2&#xff09;文本语义标签&#xff1a;<h1>-<h6>…...

python学习第十四天之机器学习名词介绍

名词介绍 1. 常用术语解释2.常见机器学习任务3. 机器学习常见算法1. 监督学习&#xff08;Supervised Learning&#xff09;2. 非监督学习&#xff08;Unsupervised Learning&#xff09;3.深度学习4.**对比总结** 1. 常用术语解释 拟合&#xff08;Fit&#xff09;&#xff1…...

天津三石峰科技——汽车生产厂的设备振动检测项目案例

汽车产线有很多传动设备需要长期在线运行&#xff0c;会出现老化、疲劳、磨损等 问题&#xff0c;为了避免意外停机造成损失&#xff0c;需要加装一些健康监测设备&#xff0c;监测设备运 行状态。天津三石峰科技采用 12 通道振动信号采集卡&#xff08;下图 1&#xff09;对…...

汽车与AI深度融合:CES Asia 2025前瞻

在科技飞速发展的当下&#xff0c;汽车与AI的融合正成为行业变革的关键驱动力。近日&#xff0c;吉利、极氪、岚图、智己等多家车企纷纷官宣与DeepSeek模型深度融合&#xff0c;其中岚图知音更是将成为首个搭载该模型的量产车型&#xff0c;这无疑是汽车智能化进程中的重要里程…...

前端实现 GIF 图片循环播放

前言 使用 img 加载 GIF 图片&#xff0c;内容只会播放一次&#xff0c;之后就会自动暂停&#xff1b; 通过定时器在一段时间后重新加载图片的方式&#xff0c;会导致浏览器内存不断增大&#xff0c;并且可能会有闪烁、卡顿的问题&#xff1b; ImageDecoder WebCodecs API 的…...

React - 事件绑定this

在 React 中&#xff0c;this 的绑定是一个常见问题&#xff0c;尤其在类组件中使用事件处理函数时。JavaScript 中的 bind 函数用于设置函数调用时 this 的值。 bind 函数的作用 bind() 方法创建一个新的函数&#xff0c;当被调用时&#xff0c;其 this 关键字被设置为提供的…...

STM32系统架构介绍

STM32系统架构 1. CM3/4系统架构2. CM3/4系统架构-----存储器组织结构2.1 寄存器地址映射&#xff08;特殊的存储器&#xff09;2.2 寄存器地址计算2.3 寄存器的封装 3. CM3/4系统架构-----时钟系统 STM32 和 ARM 以及 ARM7是什么关系? ARM 是一个做芯片标准的公司&#xff0c…...

Macbook Pro快速搭建Easysearch学习环境

在学习过程中&#xff0c;我们有时身边没有可用的服务器&#xff0c;这时就需要借助自己的 Mac 来安装和学习 Easysearch。然而&#xff0c;Easysearch 官网并未提供 Mac 版本的安装教程&#xff0c;下面我将详细整理我在 Mac 上安装和使用 Easysearch 的折腾经历。 Easysearc…...

老游戏回顾:SWRacer

竞速类游戏里&#xff0c;我很怀念它。 虽然已经25年过去了。 相比之下&#xff0c;别的游戏真的没法形容。 ---- 是LucasArts制作的一款赛车竞速游戏&#xff1b; 玩家要扮演一名银河旅行者参加各种赛车比赛&#xff0c;赢得奖金&#xff0c;在经历了八个不同星球上的24场…...

Firefox无法隐藏标题栏

Openbox 窗管 Firefox 无法隐藏标题栏。 深度Linux安装火狐,Linux(deepin) 下隐藏 Firefox 标题栏-CSDN博客 需要在 desktop 的 exec 中增加环境变量&#xff1a; Execenv MOZ_GTK_TITLEBAR_DECORATIONclient firefox...

vue基础(五)

Vue 实例在创建、挂载、更新、销毁的过程中会触发一系列的生命周期钩子&#xff08;Lifecycle Hooks&#xff09;&#xff0c;让开发者可以在不同阶段执行逻辑。 1. Vue 2 生命周期完整流程 生命周期的四个主要阶段 创建阶段&#xff08;Creation&#xff09;挂载阶段&#…...

MySQL的深度分页如何优化?

大家好&#xff0c;我是锋哥。今天分享关于【MySQL的深度分页如何优化&#xff1f;】面试题。希望对大家有帮助&#xff1b; MySQL的深度分页如何优化&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 MySQL的深度分页&#xff08;即跳过大量数据后进行分…...

深度学习每周学习总结R6(RNN实现阿尔茨海默病诊断)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客R8中的内容&#xff0c;为了便于自己整理总结起名为R6&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 目录 0. 总结1. 数据集介绍2. 数据预处理3. 模型构建4. 初始化模型及优化器5. 训练函…...