使用Java实现基数排序算法
基数排序是一种非比较型整数排序算法,通过按数位从低位到高位处理数字,将每个数字按当前数位分配到“桶”中,再按桶顺序收集回原数组,重复直至所有数位处理完毕,适合位数少的整数,效率较高。基本思想是“分配-收集-重复”:按当前数位(个位、十位等)分配到对应桶,按桶顺序收集回数组,循环处理所有数位。 以数组[5,3,8,12,23,100]为例,经个位、十位、百位三轮处理完成排序。Java代码中,通过找到最大数确定最高数位,用`(num / radix) % 10`获取当前位,以ArrayList为桶实现分配收集。时间复杂度O(d(n+k))(d为最大数位数,k=10),空间O(n+k)。该算法稳定,适合整数排序,负数可分离正负后分别排序再合并。
阅读全文使用Java实现插入排序算法
插入排序是一种简单直观的排序算法,核心思想是将未排序元素逐个插入已排序部分的正确位置,类似整理扑克牌。适合小规模数据,实现简单。 基本思路:从第2个元素开始,将当前元素记为“待插入元素”,与已排序部分从后往前比较,若已排序元素更大则后移,直至找到插入位置,重复操作直至所有元素处理完毕。 Java实现需保存待插入元素,通过循环比较并后移元素完成插入。算法时间复杂度:最好O(n)(已排序),最坏和平均O(n²);空间复杂度O(1)(原地排序);稳定排序,适用于小规模数据或几乎有序数据。 其核心在于“逐步插入”,实现简单,稳定性和原地性使其在小规模排序中表现良好。
阅读全文