返回
手写算法,一记就忘?基数排序让记忆变容易
前端
2023-09-26 06:50:23
曾经对编写算法望而生畏吗?觉得算法都是复杂的符号和难以理解的流程吗?别担心,今天我们就来认识一种简单易懂的排序算法——基数排序,让你手写算法不再成为难题!
基数排序:用位数来排序
基数排序的巧妙之处在于,它不是直接比较数字的大小,而是逐位比较数字中各个位置上的数字。就如同我们小时候学习的竖式计算,基数排序也是从低位(个位)开始排序,然后依次比较高位(十位、百位...)。
例如,对于一组数字[543, 211, 324, 123, 432],基数排序会先按个位从小到大排序,得到[123, 211, 324, 432, 543]。然后按十位排序,得到[123, 211, 324, 432, 543],再按百位排序,得到[123, 211, 324, 432, 543]。最终,得到排序后的结果[123, 211, 324, 432, 543]。
手写基数排序:一步一步来
现在,让我们一步一步地手写基数排序算法:
def radix_sort(nums):
max_num = max(nums)
exp = 1
while max_num // exp > 0:
counting_sort(nums, exp)
exp *= 10
def counting_sort(nums, exp):
n = len(nums)
output = [0] * n
count = [0] * 10
for i in range(n):
index = nums[i] // exp
count[index % 10] += 1
for i in range(1, 10):
count[i] += count[i - 1]
i = n - 1
while i >= 0:
index = nums[i] // exp
output[count[index % 10] - 1] = nums[i]
count[index % 10] -= 1
i -= 1
for i in range(n):
nums[i] = output[i]
在代码中,counting_sort
函数负责按指定位数进行计数排序,而radix_sort
函数则负责逐位进行基数排序。
总结:简单易记,应用广泛
基数排序以其简单易懂、易于实现的优点而著称。它特别适用于对大整数数组进行排序。在实际应用中,基数排序被广泛用于各种领域,如数据库管理、数据分析和财务计算。
现在,你已经掌握了基数排序的原理和实现,下次遇到排序问题时,不妨尝试一下这种简单高效的算法吧!