
算法基础-排序
八大排序
报错小能手
等我读懂代码的隐喻我早就死了
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
新手向 算法 基数排序-yang
摘要:基数排序是一种非比较型整数排序算法,通过按位切割并稳定排序实现。其步骤包括确定最大位数、从最低位开始逐位排序(常用计数排序)、合并结果,时间复杂度为O(d*(n+k)),空间复杂度O(n+k)。该算法稳定高效,适用于整数或字符串排序,特别适合位数少但范围广的数据,但不支持浮点数。C++实现通过队列分桶完成排序。原创 2025-09-24 18:51:54 · 288 阅读 · 0 评论 -
新手向 算法 插入排序-yang
插入排序是一种简单直观的排序算法,通过构建有序序列,将未排序数据逐个插入到适当位置。其时间复杂度为O(n²),适合小规模数据排序。算法实现包括外层循环遍历数组、内层循环比较并移动元素,最终插入到正确位置。最坏情况下时间复杂度为O(n²),最好情况下为O(n)。插入排序实现简单,在小规模或部分有序数据中效率较高,但不适合大规模数据排序。原创 2025-09-20 09:46:37 · 753 阅读 · 0 评论 -
新手向 算法 堆排-yang
堆排序是一种基于二叉堆的高效排序算法,时间复杂度为O(nlogn)。它通过构建最大堆(父节点值≥子节点值)并反复交换堆顶与末尾元素完成排序。核心步骤包括:1)从最后一个非叶子节点开始构建最大堆;2)交换堆顶元素与数组末尾;3)缩小堆范围并重新调整。C++实现使用递归Heap_Adjust函数维护堆性质,Heap_Sort函数完成建堆和排序过程。该算法空间复杂度O(1),适合大规模数据排序,但在小数据量时效率较低。原创 2025-09-23 12:56:30 · 272 阅读 · 0 评论 -
新手向 算法 选择排序-yang
选择排序是一种简单直观的排序算法,通过每次从待排序列中选出最小元素并交换到起始位置来完成排序。其C语言实现使用双重循环:外层控制轮次,内层查找最小值位置并进行交换。该算法时间复杂度为O(n²),空间复杂度O(1),属于不稳定排序。示例代码演示了完整的实现过程,包括数组遍历、最小值查找和元素交换等关键步骤。原创 2025-09-19 16:16:57 · 734 阅读 · 0 评论 -
新手向 算法 希尔排序-yang
希尔排序是插入排序的高效改进版,通过分组插入排序逐步缩小间隔完成整体排序。算法采用增量序列(如n/2递减或Knuth序列)分组处理,时间复杂度O(n^1.3~n^2),空间复杂度O(1),属于不稳定排序。C++实现展示了分组插入和增量缩减过程,关键点包括间隔序列选择、原地操作特性及优化方向(如采用Sedgewick序列)。测试示例验证了算法有效性,优化时可结合更优间隔序列或混合排序策略。原创 2025-09-21 19:48:11 · 437 阅读 · 0 评论 -
新手向 算法 冒泡排序-yang
本文展示了C语言实现冒泡排序的两种代码方案。基础版本通过双重循环比较相邻元素并进行交换,将较大元素逐步冒泡到数组末尾;优化版本添加了提前终止标志,当某轮未发生交换时即可结束排序。两种实现均采用原地排序,空间复杂度为O(1)。算法时间复杂度最坏O(n²),优化后最好情况可达O(n)。文中包含完整代码示例、详细注释及运行结果演示,适用于小规模数据排序场景。原创 2025-09-18 14:14:03 · 593 阅读 · 0 评论 -
新手向 算法 归并排序-yang
摘要:归并排序是一种采用分治策略的排序算法,通过递归将数组不断二分并排序,最后合并有序子数组。其核心在于合并操作,需要额外O(n)空间存储临时数据。代码实现包括递归分割和有序合并两个主要步骤。优化方向包括:对小规模数据改用插入排序、预分配临时数组减少内存开销、改用迭代实现等。该算法时间复杂稳定为O(nlogn),空间复杂度O(n),适合处理大规模数据但需注意内存消耗。原创 2025-09-22 12:21:19 · 430 阅读 · 0 评论