使用Python实现基数排序算法
基数排序是一种非比较型整数排序算法,核心思想是按数字每一位(从低位到高位)分桶收集。基本步骤:先确定数组中最大数的位数,再从最低位到最高位,对每一位数字进行“分桶”(0-9共10个桶)和“收集”操作,将当前位数字相同的元素放入同一桶,按桶顺序收集更新数组,直至所有位处理完毕。Python实现通过循环位数、计算当前位数字分桶并收集,时间复杂度为O(d×(n+k))(d为最大数位数,n为数组长度,k=10),空间复杂度O(n+k)。适合位数少的整数数组,处理负数时可先转正数排序再恢复符号。
阅读全文使用Python实现希尔排序算法
希尔排序是插入排序的改进版,通过分组缩小元素间隔,先“粗排”再“精排”提升效率。核心是选择初始增量(如数组长度的一半),将数组分为若干组,组内元素间隔为增量,对每组用插入排序;随后增量减半,重复分组排序,直至增量为1时完成“精排”。 其关键逻辑是通过分组减少元素移动次数:初始分组大(元素间隔大),先让数组基本有序;逐步缩小增量,最终以插入排序收尾。时间复杂度平均为O(n log n),最坏O(n²),空间复杂度O(1),适用于中等规模、元素分布不均的数组,是原地排序的高效算法。
阅读全文扑克牌排序启示:插入排序的生活类比与实现
这篇文章介绍了插入排序算法。核心思想是逐步构建有序序列:默认首个元素已排序,从第二个元素起,将每个元素(待插入元素)插入到前面已排序序列的正确位置(需移动较大元素腾出空间)。以数组`[5,3,8,4,2]`为例,演示了从后往前比较、移动元素的过程,关键步骤为:遍历数组,暂存待插入元素,移动已排序元素,插入位置。 算法特点:优点是简单直观、原地排序(空间复杂度O(1))、稳定且适合小规模或近乎有序数据;缺点是最坏时间复杂度O(n²),移动操作较多。总结而言,插入排序是理解排序算法的基础,通过生活类比(如整理扑克牌)帮助理解,适用于简单场景或小规模数据排序。
阅读全文