技术栈
排序算法
Cccp.123
4 小时前
leetcode
·
链表
·
排序算法
【leetcode】(四)排序算法汇总和链表
同样值的个体之间,如果不因为排序而改变相对次序,就是这个排序是有稳定性的;否则就没有。例如:原数组[2,1,2,1,3,2,3,2],排完序后变成新数组[1,1,2,2,2,2,3,3],要保持稳定性,是指原数组中的第一个“1”和第二个“1”在排完序后是否能够对应新数组中的第一个“1”和第二个“1”,同样的,2和3以此类推。
LayZhangStrive
4 小时前
java
·
数据结构
·
算法
·
排序算法
·
堆排序
·
大根堆
数据结构与算法 - 堆排序
在早期排序算法中,冒泡、简单选择、直接插入排序时间复杂度 O(n2),数据量大效率很差;归并排序可以做到 O(nlogn),但是需要额外 O (n) 辅助空间,无法原地排序;快速排序平均O(nlogn),最坏退化到O(n2),不稳定。为了解决:希望拥有 O(nlogn) 时间复杂度,并且能够原地排序,不占用大量额外内存,堆排序基于堆(完全二叉树)的数据结构思想被提出。
wuyk555
6 小时前
开发语言
·
算法
·
排序算法
13.堆排序:基于完全二叉树的高效排序算法一、什么是堆排序?
堆排序(Heap Sort)是一种基于完全二叉树的高效排序算法,它利用堆的性质(最大堆或最小堆)将数组转换为有序序列。
青山木
20 小时前
java
·
数据结构
·
算法
·
排序算法
Hot 100 --- 数组中的第K个最大元素
本文概览:本文讲解数组中的第K个最大元素的核心思路:维护大小为 k 的最小堆,动态保留前 k 大的元素,堆顶即答案,时间复杂度 O(n log k)
wuyk555
21 小时前
开发语言
·
数据结构
·
算法
·
排序算法
12.归并排序:分治思想的稳定排序算法
归并排序(Merge Sort)是一种基于分治思想的稳定排序算法,由 John von Neumann 在 1945 年提出。它的核心思想是先将数组递归拆分成单个元素,再将有序的子数组两两合并,最终得到完全有序的数组。
明月_清风
4 天前
后端
·
算法
·
排序算法
十大经典排序算法 Go 实现全解:从入门到面试通关
排序算法是算法面试的必考点。本文用 Go 语言实现 10 大经典排序算法,配合图解和复杂度分析,帮你建立完整的排序知识体系。
凉茶钱
4 天前
数据结构
·
算法
·
排序算法
【数据结构】计数排序
目录一.计数排序计数排序属于非比较排序,不通过元素之间互相比较完成排序。核心思想是统计数组中每个元素出现的次数,开辟一块计数空间,遍历待排序数组统计每个数值出现频次;之后再遍历计数数组,按照数值从小到大,根据统计到的次数把数值回填到原数组中,从而得到有序序列。计数排序适合数据范围比较集中的整数,数据跨度很大时会造成计数数组空间浪费。
晊晌_h
5 天前
数据结构
·
算法
·
排序算法
嵌入式从0到精通——数据结构总结[特殊字符]
📚期末复习 / 课程实验必备! 学习 C 语言数据结构的时候,很多同学会头疼链表指针、内存管理、各种增删改查逻辑。网上代码片段多,完整带注释工程较少。
Cccp.123
5 天前
算法
·
排序算法
【leetcode】(一)认识复杂度和简单排序算法
常数时间的操作一个操作如果和样本的数据量没有关系,每次都是固定时间内完成的操作,叫做常数操作。时间复杂度为一个算法流程中,常数操作数量的一个指标。常用 O(读作 big O)来表示。具体来说,先要对一个算法流程非常熟悉,然后去写出这个算法流程中,发生了多少常数操作,进而总结出常数操作数量的表达式。
纪念 229
8 天前
数据结构
·
算法
·
排序算法
数据结构排序(一)
༺ 个人主页 · 纪念229 ༻🏠我的博客主页🏠༒专栏目录:《数据结构》༒༒专栏目录:《算法》༒༒专栏目录:《MySQL数据库》༒
码行山野赴时序归途
10 天前
c语言
·
开发语言
·
数据结构
·
算法
·
leetcode
·
排序算法
从暴力到最优:三道 C 语言入门题的解法思路
做算法题有个挺有意思的规律:题目越简单,越能看出思路的差距。暴力解法往往很快就能写出来,但想出更优雅的解法,可能需要多琢磨一会儿。下面这三道题都是 LeetCode 上的简单题,我把自己第一次做时的思路和后来学到的更好写法整理了一下。
晚风醉蝶
10 天前
python
·
算法
·
排序算法
·
基数排序
1-18-基数排序-RadixSort
摘要:本文从"计数排序只能排小范围整数,大整数怎么办"的问题出发,详解基数排序如何通过"将大整数分解为多个位,每位独立计数排序"的思路,将非比较排序的适用范围扩展到任意位数的整数甚至字符串。给出了 LSD(最低位优先)、MSD(最高位优先)、含负数版、字符串版共四个 Python 完整实现,图解了逐位计数排序的稳定传递过程,分析了基数选择对性能的影响。最后结合后缀数组、字符串匹配等工程场景讨论其设计哲学与面试高频考点。
小七在进步
10 天前
数据结构
·
算法
·
排序算法
数据结构:快速排序
前面我们讲了交换排序中的冒泡排序,接下来让我们一起进入快速排序的学习当中。快速排序是 Hoare 于 1962 年提出的一种基于二叉树结构的交换排序方法,其基本思想为:任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两个子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后对左右子序列重复该过程,直到所有元素都排列在相应位置上为止。 我们随机取一个数作为基准值。 然后将比基准值小的值放到左边的序列中,将比基准值大的值放到右边的序列中。 然后从左右序列中再找基准值
wuyk555
10 天前
开发语言
·
stm32
·
单片机
·
算法
·
排序算法
9.冒泡排序:像鱼缸泡泡一样的简单排序算法
冒泡排序(Bubble Sort)是一种简单直观的排序算法,它的核心思想是通过相邻元素的比较和交换,让较大的元素像鱼缸里的泡泡一样 “浮” 到数组的末尾,重复这个过程直到所有元素排序完成。
LuminousCPP
11 天前
c语言
·
数据结构
·
笔记
·
排序算法
数据结构-二叉树(三):堆复杂度证明与 Top-K 问题|错位相减推导 + 海量数据内存优化
上一篇我们已经完成了二叉堆的完整实现,从完全二叉树的数组存储出发,学习了 HeapAdjustUp、HeapAdjustDown、HeapPush、HeapPop,并进一步实现了建堆与堆排序。
1000世界小札
12 天前
数据结构
·
算法
·
排序算法
排序算法全景总结:从 O(n²) 到 O(n log n),再到线性时间(附完整对比与选型指南)
通过元素之间的比较来决定顺序,理论下界是 Ω(n log n)。不直接比较元素大小,而是利用数据本身的特性(范围、位数等),可以突破 O(n log n) 的限制,达到线性时间。
csdn_aspnet
13 天前
算法
·
c#
·
排序算法
C# 第k个最小元素(K’th Smallest Element)
目录【朴素方法】使用排序——时间复杂度为 O(n log(n)),空间复杂度为 O(1)【预期方法】使用最大堆 - 时间复杂度为 O(n * log(k)),空间复杂度为 O(k)
万法若空
14 天前
数据结构
·
算法
·
排序算法
CSP-J/S 排序算法完整专题训练题单
本练习共18题,覆盖CSP-J/S中排序算法的全部核心题型。每道题均附有答案与详细解析,方便教师讲解或学生自查。
凉茶钱
14 天前
数据结构
·
算法
·
排序算法
【数据结构】排序(快排,选择,直接插入,希尔)
目录一.快速排序1).快排的介绍3).lomuto前后指针法4).非递归快排二.选择排序快速排序是基于分治思想的经典交换排序算法,它选定一个元素作为基准值,通过双指针遍历将数组划分为两部分,使基准左侧元素全部小于等于它、右侧元素全部大于等于它,再递归对划分得到的左右子区间重复上述操作,不断缩小待排序范围,最终得到整体有序的数组,平均时间复杂度为 O (nlogn),最坏情况下可达 O (n²),属于不稳定排序。
晚风醉蝶
14 天前
python
·
算法
·
排序算法
1-16-计数排序-CountingSort
摘要:本文从"比较排序的时间下界是 Ω(n log n)"的理论限制出发,详解计数排序如何通过"统计次数而非比较大小"突破这一下界,实现 O(n + k) 的线性时间复杂度。给出了支持升序/降序的 Python 完整实现(标准稳定版、原地版、基数排序专用版),图解了四步核心流程与前缀和的含义,分析了其稳定性保证与空间权衡。最后结合基数排序、桶排序的工程场景讨论其设计哲学与面试高频考点。