概述
这里写目录标题
- 1. 思路
- 2. 代码1
- 3. 代码2
1. 思路
1. 创建一个长度为列表长度+1 的新列表
2. 找出列表中元素出现的个数,并存储到新列表中
比如列表为:1 3 1 2 6 5 6 1
数 有几个
0 0
1 3
2 1
3 1
4 0
5 1
6 2
3. 清除旧列表的所有元素,按照元素出现的个数,按照顺序依次添加到旧列表中
2. 代码1
def count_sort(li, max_num):
count = [0 for i in range(max_num + 1)]
for val in li:
count[val] += 1 # 每个数字的个数
print('count:', count)
li.clear()
for index, val in enumerate(count):# index代表数,val代表数量
for i in range(val): # 遍历数量
li.append(index) # 将数添加到列表中
import random
li = [1, 1, 2, 3, 4, 3, 4, 1, 3]
random.shuffle(li)
print(li)
count_sort(li, max(li))
print(li)
观察下面结果:
[4, 3, 3, 1, 1, 2, 4, 1, 3]
count: [0, 0, 0, 0, 1] 将第一次出现的数字4 加到新列表中,现在4的数量为1
count: [0, 0, 0, 1, 1] 将第一次出现的数字3 加到新列表中,现在3的数量为1
count: [0, 0, 0, 2, 1] 将第二次出现的数字3 加到新列表中,现在3的数量为2
count: [0, 1, 0, 2, 1] 将第一次出现的数字1 加到新列表中,现在1的数量为1
count: [0, 2, 0, 2, 1] 将第二次出现的数字1 加到新列表中,现在1的数量为2
count: [0, 2, 1, 2, 1] 将第一次出现的数字2 加到新列表中,现在2的数量为1
count: [0, 2, 1, 2, 2] 将第二次出现的数字4 加到新列表中,现在4的数量为2
count: [0, 3, 1, 2, 2] 将第三次出现的数字1 加到新列表中,现在1的数量为3
count: [0, 3, 1, 3, 2] 将第三次出现的数字3 加到新列表中,现在3的数量为3
[1, 1, 1, 2, 3, 3, 3, 4, 4]
enumerate解释:
enumerate:获取列表的下标和元素
li = [1, 1, 1, 2, 3, 3, 3, 4, 4]
for index, value in enumerate(li):
print('下标:{} 元素:{}'.format(index, value))
3. 代码2
def count_sort(li):
n = len(li) # li列表长度
num = max(li) # li列表最大的元素
# print(n,num)
count = [0] * (num + 1) # 创建一个新列表,长度为最大元素+1
for i in range(0, n):
count[li[i]] += 1 # 计算每个数字的个数
print('count:', count)
li = [] # 清空列表
for i in range(0, num + 1): # 遍历列表长度,代表数
for j in range(0, count[i]):# 遍历count列表,j代表这个数的数量
li.append(i) #将这个数添加到列表中
return li
li = [1, 1, 2, 3, 4, 3, 4, 1, 3]
print(li)
print(count_sort(li))
最后
以上就是眼睛大鸵鸟为你收集整理的python计数排序1. 思路2. 代码13. 代码2的全部内容,希望文章能够帮你解决python计数排序1. 思路2. 代码13. 代码2所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复