gpt4 book ai didi

python - 如何实现适用于负数的 CountingSort?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:42:54 24 4
gpt4 key购买 nike

我在 Python 中实现了以下计数排序算法,但它不适用于包含负数的数组。有人可以帮助我吗?

def counting(nlist):
nlist = list(nlist)
size = len(nlist)

if size < 2:
return nlist

k = max(nlist)

counter = [0] * ( k + 1 )

for i in nlist:
counter[i] += 1

ndx = 0;
for i in range( len( counter ) ):
while 0 < counter[i]:
nlist[ndx] = i
ndx += 1
counter[i] -= 1

return nlist

最佳答案

一个简单的方法就是找到最小值并将您的索引偏移该数量,以便最小值存储在 counter 的数组索引 0 中。然后在你的 while 循环中,重新添加最小值以获得原始值:

m = min(nlist)
k = max(nlist) - m

counter = [0] * ( k + 1 )

for i in nlist:
counter[i-m] += 1

ndx = 0;
for i in range( len( counter ) ):
while 0 < counter[i]:
nlist[ndx] = i+m
ndx += 1
counter[i] -= 1

关于python - 如何实现适用于负数的 CountingSort?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41324974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com