1.排序算法(学习自用)

embedded/2025/3/16 9:16:26/

1.冒泡排序

算法步骤

相邻的元素之间对比,每次早出最大值或最小值放到最后或前面,所以形象的称为冒泡。

特点

n个数排序则进行n轮,每轮比较n-i次。所以时间复杂度为O(n^2),空间复杂度为O(1),该算法>排序算法稳定。

代码模板

python">n = int(input())
a = list(map(int, input().split()))for i in range(1, n-1):for j in range(0, n - i):if a[j] > a[j + 1]:a[j], a[j + 1] = a[j + 1], a[j]print(' '.join(map(str, a)))

2.选择排序

算法步骤

从左往右找到最小元素,放在起始位置。依次找到第i个位置的元素。

特点

n个数排序有n个位置,每轮比较n-i次。所以时间复杂度为O(n^2),空间复杂度为O(1),该算法>排序算法稳定。

代码模板

python">n = int(input())
a = list(map(int, input().split()))for i in range(0, n-1):min_val = a[i]min_id = ifor j in range(i, n):if a[j] < min_val:min_val = a[j]min_id = ja[i], a[min_id] = a[min_id], a[i]print(' '.join(map(str, a)))

3.插入排序

算法步骤

第一个元素看做已排序,从左往右遍历每一个元素。在已排序元素中从后往前扫描:如果当前元素大于新元素,则钙元素移动到后一位。
简单来说,对第i个元素从i向左到i-1找合适的位置插入。

特点

n个数排序则进行n轮插入,每轮比较i次。所以时间复杂度为O(n^2),空间复杂度为O(1),该算法>排序算法不稳定。

代码模板

python">n = int(input())
a = list(map(int, input().split()))for i in range(1, n):value = a[i]insert_id = 0for j in range(i - 1, -1, -1):if a[j] > value:a[j + 1] = a[j]else:insert_id = j + 1breaka[insert_id] = valueprint(' '.join(map(str, a)))

4.快速排序

算法步骤

找一个基准值x,把列表分为三部分:小于等于x的数、x、大于x的数字。左部分和右部分递归使用该策略。

特点

时间复杂度为O(n log(n)),空间复杂度为O(n log(n)),该算法>排序算法不稳定。

代码模板

python">def partition(a, left, right):id = left + 1for i in range(left + 1, right + 1):if a[i] <= a[left]:a[id], a[i] = a[i], a[id]id += 1a[left], a[id - 1] = a[id - 1], a[left]return id - 1def quicksort(a, left, right):if left < right:mid = partition(a, left, right)quicksort(a, left, mid - 1)quicksort(a, mid + 1, right)n = int(input())
a = list(map(int, input().split()))quicksort(a, 0 , n - 1)
print(' '.join(map(str, a)))

5.归并排序

算法步骤

先把数组分成两部分,,每部分递归处理变成有序,将两个有序列表合并起来。

代码模板

在这里插入图片描述

6.桶排序

算法步骤

利用函数映射关系,将输入数据分到有限的桶里,然后每个通分别排序:
(1)初始化k个桶
(2)遍历数据,将数据放入到对应桶中
(3)每个桶单独排序
(4)各个桶的数据拼接起来

代码模板

在这里插入图片描述


http://www.ppmy.cn/embedded/173025.html

相关文章

新手村:统计量均值、中位数、标准差、四分位数

新手村&#xff1a;统计量均值、中位数、标准差、四分位数 统计量定义与讲解 统计量定义计算公式示例说明均值数据集中的所有数值之和除以数值的个数。 Mean ∑ i 1 n x i n \text{Mean} \frac{\sum_{i1}^{n} x_i}{n} Meann∑i1n​xi​​对于数据集 [1, 2, 3, 4, 5]&#x…

【17-3】Twitter评论情绪分类实战

139-Twitter评论情绪基础RNN模型分类 143-LSTM文本分类模型 【参考文档】17-3Twitter评论情绪分类.ipynb 【导出代码】 # %% [markdown] # # 139-Twitter评论情绪分类# %% [markdown] # ## 数据读取处理# %% import torch import torchtext import torch.nn as nn import t…

ARM64 架构地址空间分配深度解析

一、寻址空间选择的技术逻辑&#xff08;基于 ARMv8 架构&#xff09; 地址空间截断的工程实现&#xff08;LPAE 技术&#xff09; 在计算架构设计中&#xff0c;ARM64架构选择使用48位/52位虚拟地址空间而非完整的64位寻址&#xff0c;这一决策体现了硬件设计者在性能、功耗…

【A2DP】深入解读A2DP中通用访问配置文件(GAP)的互操作性要求

目录 一、模式支持要求 1.1 发现模式 1.2 连接模式 1.3 绑定模式 1.4 模式间依赖关系总结 1.5 注意事项 1.6 协议设计深层逻辑 二、安全机制&#xff08;Security Aspects&#xff09; 三、空闲模式操作&#xff08;Idle Mode Procedures&#xff09; 3.1 支持要求 …

Python 逆向工程:2025 年能破解什么?

有没有想过在复杂的软件上扭转局面&#xff1f;到 2025 年&#xff0c;Python 逆向工程不仅仅是黑客的游戏&#xff0c;它是开发人员、安全专业人员和好奇心强的人解开编译代码背后秘密的强大方法。无论您是在剖析恶意软件、分析 Python 应用程序的工作原理&#xff0c;还是学习…

多线程到底重不重要?

我们先说一下为什么要讲多线程和高并发&#xff1f; 原因是&#xff0c;你想拿到一个更高的薪水&#xff0c;在面试的时候呈现出了两个方向的现象&#xff1a; 第一个是上天 项目经验高并发 缓存 大流量 大数据量的架构设计 第二个是入地 各种基础算法&#xff0c;各种基础…

C/C++蓝桥杯算法真题打卡(Day4)

一、P11041 [蓝桥杯 2024 省 Java B] 报数游戏 - 洛谷 算法代码&#xff1a; #include<bits/stdc.h> using namespace std;// 计算第 n 个满足条件的数 long long findNthNumber(long long n) {long long low 1, high 1e18; // 二分查找范围while (low < high) {lo…

微软为何选择用Go而非Rust重写TypeScript

最近&#xff0c; TypeScript 宣布用 Go 语言全面重写 TypeScript。重写后的ts在某些测试中实现了 10 倍的速度提升(例如对于VS Code项目)&#xff0c;有的甚至高达 15 倍。 A 10x Faster TypeScript 短短几天,其官方库 typescript-go star数超过了1.4万,各种文章纷至沓来. 但同…