帮我写一个计数排序的代码
时间: 2023-09-21 22:05:40 浏览: 88
php计数排序算法的实现代码(附四个实例代码)
### 回答1:
好的,以下是一个简单的 Python 代码实现计数排序:
```python
def counting_sort(arr):
# 找到数组中的最大值
max_val = max(arr)
# 初始化计数数组
count = [0] * (max_val + 1)
# 计算每个元素出现的次数
for num in arr:
count[num] += 1
# 计算每个元素的累计次数
for i in range(1, len(count)):
count[i] += count[i-1]
# 初始化排序结果数组
sorted_arr = [0] * len(arr)
# 遍历原数组,将每个元素放入排序结果数组的正确位置
for num in arr:
sorted_arr[count[num]-1] = num
count[num] -= 1
return sorted_arr
```
使用方法:
```python
arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_arr = counting_sort(arr)
print(sorted_arr)
```
输出结果为:
```
[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
```
### 回答2:
计数排序是一种基于比较键值的排序算法。它的基本思想是统计每个键值出现的次数,并根据键值的大小依次填充到有序数组中。
以下是一个示例的计数排序代码:
```python
def countingSort(arr):
# 确定数组的最大值
max_value = max(arr)
# 初始化计数数组
count = [0] * (max_value + 1)
# 统计每个键值出现的次数
for num in arr:
count[num] += 1
# 根据计数数组填充有序数组
sorted_arr = []
for i in range(max_value + 1):
sorted_arr.extend([i] * count[i])
return sorted_arr
# 测试计数排序
arr = [4, 2, 5, 1, 3, 4, 6, 5]
sorted_arr = countingSort(arr)
print(sorted_arr)
```
在上面的代码中,我们首先找到数组中的最大值,然后创建一个计数数组count,长度为最大值加1。接下来,我们遍历原数组arr,统计每个键值出现的次数,并将次数存储在计数数组count中。然后,我们根据计数数组count的数据,依次将键值填充到有序数组sorted_arr中。
以上就是一个计数排序的简单实现,希望对你有所帮助。
### 回答3:
当然可以帮您编写一个计数排序的代码。计数排序是一种非比较排序算法,它通过一个辅助数组来统计每个元素出现的次数,然后根据元素的顺序和出现次数重新排序。
下面是一个简单的计数排序代码的实现:
```python
def counting_sort(arr):
# 找出数组中的最大值
max_value = max(arr)
# 根据最大值创建一个辅助数组,并初始化为0
count = [0] * (max_value + 1)
# 统计每个元素出现的次数
for num in arr:
count[num] += 1
# 根据元素的顺序和出现次数重新排序
sorted_arr = []
for i in range(len(count)):
sorted_arr += [i] * count[i]
return sorted_arr
# 测试
arr = [10, 5, 8, 3, 2, 7, 9, 1, 6, 4]
sorted_arr = counting_sort(arr)
print(sorted_arr)
```
这个代码中,首先找出数组中的最大值,然后根据最大值创建一个辅助数组count。遍历原始数组arr并以元素值作为索引,将count数组对应位置的值加1,统计每个元素出现的次数。然后再遍历count数组,根据元素的顺序和出现次数重新构建排序后的数组sorted_arr,并返回该数组。
以上就是一个简单的计数排序的代码实现,希望对您有所帮助。
阅读全文