排序算法

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