好的,根据您的要求进行直接插入排序和基数排序的示例代码如下所示:
1. 直接插入排序:def direct_insertion_sort(lst): for i in range(1, len(lst)): key = lst[i] j = i - 1 while j >= 0 and lst[j] > key: lst[j + 1] = lst[j] j -= 1 lst[j + 1] = keylst = [1039, 3355, 2121, 4382, 66, 118, 427]direct_insertion_sort(lst)print("直接插入排序结果:", lst[:2])
2. 基数排序:def radix_sort(lst, r, d): for i in range(d): buckets = [[] for _ in range(r)] for num in lst: digit = (num // (r ** i)) % r buckets[digit].append(num) lst = [num for bucket in buckets for num in bucket] return lstlst = [1039, 3355, 2121, 4382, 66, 118, 427]radix_sorted_lst = radix_sort(lst, 10, 4)print("第一次基数排序结果:", radix_sorted_lst[:2])radix_sorted_lst = radix_sort(radix_sorted_lst, 10, 4)print("第二次基数排序结果:", radix_sorted_lst[:2])
请注意,在基数排序中,我们使用了一个名为 `buckets` 的列表,其长度为基数 `r`。我们首先将列表中的数字按照个位数的大小进行分类(放入不同的桶中),然后按顺序将桶中的数字重新组合成新的列表。我们重复这个过程,以便根据每个数字的十位、百位等进行排序。
希望以上代码可以帮助您理解直接插入排序和基数排序的实现方式!
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。 |