下面是详细讲解“使用Python实现希尔、计数、基数基础排序的代码”的完整攻略。
1. 什么排序算法?
排序算法是一种将一组数据按照特定顺序排列的算法。排序算法可以按照复杂度、间复杂度、稳定性等方面进行分类。常见的排序算法包括冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序等。
2. Python实现希尔、计数、基数基础排序代码
2.1 希尔排序
希尔排序是一种基于插入排序的排序算法,它通过将数据分成多个子序列来进行排序。希尔排序的时间复杂度为O(nlogn)。
以下是Python实现希尔排序的代码:
def shell_sort(arr):
n = len(arr)
gap = n // 2
while gap > 0:
for i in range(gap, n):
temp = arr[i]
j = i
while j >= gap and arr[j - gap] > temp:
arr[j] = arr[j - gap]
j -= gap
arr[j] = temp
gap //= 2
return arr
2.2 计数排序
计数排序是一种非比较排序算法,它通过统计每个元素出现的次数来进行排序。计数排序的时间复杂度为O(n+k),其中k为元素的范围。
以下是Python实现计数排序的代码:
def counting_sort(arr):
n = len(arr)
max_val = max(arr)
count = [0] * (max_val + 1)
for i in range(n):
count[arr[i]] += 1
for i in range(1, max_val + 1):
count[i] += count[i - 1]
output = [0] * n
for i in range(n - 1, -1, -1):
output[count[arr[i]] - 1] = arr[i]
count[arr[i]] -= 1
return output
2.3 基数排序
基数排序是一种非比较排序算法,它通过将数据按照位数进行排序。基数排序的时间复杂度为O(d(n+k)),其中d为最大位,k为元素的范围。
以下是Python实现基数排序的代码:
def radix_sort(arr):
max_val = max(arr)
exp = 1
while max_val // exp > 0:
count = [0] * 10
for i in range(len(arr)):
count[(arr[i] // exp) % 10] += 1
for i in range(1, 10):
count[i] += count[i - 1]
output = [0] * len(arr)
for i in range(len(arr) - 1, -1, -1):
output[count[(arr[i] // exp) % 10] - 1] = arr[i]
count[(arr[i] // exp) % 10] -= 1
for i in range(len(arr)):
arr[i] = output[i]
exp *= 10
return arr
2.4 示例说明
以下是两个示例说明,分别是使用希尔排序和计数排序进行排序。
2.4.1 希尔排序
以下是使用希尔排序进行排序的示例:
arr = [64, 25, 12, 22, 11]
sorted_arr = shell_sort(arr)
print(sorted_arr)
输出结果为:
[11, 12, 22, 25, 64]
.4.2 计数排序
以下是使用计数排序进行排序的示例:
arr = [4, 2, 2, 8, 3, 3, 1]
sorted_arr = counting_sort(arr)
print(sorted_arr)
输出结果为:
[1, 2, 2, 3, 3, 4, 8]
3. 总结
排序算法是一种将一组数据按照特定顺序排列算法。本文介绍了Python实现希尔、计数、基数基础排序的代码,包括希尔排序、计数排序和基数排序。同时,本文还提供了两个示例说明,分别是使用希尔排序和计数排序进行。