排序算法:冒泡排序入门,步骤详解+代码示例
冒泡排序是计算机科学中最简单的排序算法之一,核心思想是通过重复比较相邻元素并交换位置,使大元素逐步“冒泡”到数组末尾。其基本步骤为:外层循环控制n-1轮比较(每轮确定一个大元素位置),内层循环从第一个元素开始,依次比较相邻元素,若前大后小则交换;优化项为若某轮无交换,说明数组已有序,可提前终止。 时间复杂度上,最坏情况(完全逆序)为O(n²),最好情况(已排序)为O(n),空间复杂度为O(1)(仅需常数额外空间)。该算法实现简单、易于理解,适合小规模数据排序,是排序算法的入门基础。
阅读全文使用Java实现计数排序算法
计数排序是简单直观的非比较型排序算法,通过统计元素出现次数并结合前缀和确定位置,适用于元素范围小(如整数)、重复元素多且需稳定排序的场景。其核心思路:先确定元素范围(找min和max),统计各元素出现次数,计算前缀和得到元素最后位置,再从后遍历原数组生成排序结果。 实现步骤:处理边界(空/单元素数组无需排序),确定min/max,创建计数数组统计次数,计算前缀和(累加得到元素最后位置),从后遍历生成结果。时间复杂度O(n+k)(n为数组长度,k为元素范围),空间复杂度O(n+k)。适用场景为整数范围小(如分数、年龄)、重复元素多且需稳定排序。该算法通过计数和累加实现,无需比较,适合初学者理解排序基本思想。
阅读全文使用Java实现快速排序算法
快速排序基于分治思想,核心是选基准元素分区(小于和大于基准),递归处理子数组,平均时间复杂度O(n log n),是常用高效排序算法。基本步骤:选基准(如最右元素),分区后递归排序左右子数组。分区逻辑:以最右元素为基准,定义i指向“小于基准区域”末尾,遍历数组交换小于基准的元素,最后将基准移至正确位置。Java代码实现了该逻辑。时间复杂度平均O(n log n),最坏O(n²),空间平均O(log n)。缺点是不稳定排序,最坏性能较差,需注意基准选择优化性能。
阅读全文