"Python 계수정렬 구현"의 두 판 사이의 차이

 
(사용자 2명의 중간 판 6개는 보이지 않습니다)
2번째 줄: 2번째 줄:
;Python 카운팅정렬 구현
;Python 카운팅정렬 구현


{{소스헤더|원본 미보존}}
<source lang='python'>
<source lang='python'>
def counting_sort(a):
count={}
for x in a: count[x]=count.get(x,0)+1
pos=0
for x,repeat in sorted(count.items()):
    a[pos:pos+repeat] = [x]*repeat
    pos += repeat
arr = [9,1,22,4,0,-1,1,22,100,10]
counting_sort(arr)
print( arr )
# [-1, 0, 1, 1, 4, 9, 10, 22, 22, 100]
</source>
</source>
{{소스헤더|원본 보존}}
<source lang='python'>
<source lang='python'>
def count_sort(arr):
def counting_sort(a):
size = len(arr)
    minval = min(a)
mx = max(arr)
    maxval = max(a)
output = [0]*size
    count = {}
result = [0]*size
    for i in range(minval,maxval+1): count[i]=0
count = [0]*(mx+1)
    for x in a: count[x]+=1
for i in range(size):
    i = 0
count[i] += 1
    for x, c in count.items():
for i in range(mx):
        if c==0: continue
count[i] += count[i-1]
        a[i:i+c] = [x]*c
for i in range(size):
        i += c
output[count[arr[i]]-1] = arr[i]
arr = [9,1,22,4,0,-1,1,22,100,10]
count[arr[i]] -= 1
counting_sort(arr)
for i in range(size):
result[i] = output[i]
return result
arr = [3,4,2,1,7,5,8,9,0,6,100,10]
sorted = count_sort(arr)
print( arr )
print( arr )
print( sorted )
# [-1, 0, 1, 1, 4, 9, 10, 22, 22, 100]
# [3, 4, 2, 1, 7, 5, 8, 9, 0, 6, 100, 10]
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100]
</source>
</source>


==같이 보기==
==같이 보기==
* [[카운팅정렬]]
* [[카운팅정렬 구현]]
* [[카운팅정렬 구현]]
* [[카운팅정렬]]


[[분류: Python]]
[[분류:Python 정렬]]
[[분류: 정렬]]
[[분류:계수정렬]]

2018년 8월 28일 (화) 02:07 기준 최신판

1 개요[ | ]

Python 카운팅정렬 구현
def counting_sort(a):
	count={}
	for x in a: count[x]=count.get(x,0)+1
	pos=0
	for x,repeat in sorted(count.items()):
	    a[pos:pos+repeat] = [x]*repeat
	    pos += repeat
arr = [9,1,22,4,0,-1,1,22,100,10]
counting_sort(arr)
print( arr )
# [-1, 0, 1, 1, 4, 9, 10, 22, 22, 100]
def counting_sort(a):
    minval = min(a)
    maxval = max(a)
    count = {}
    for i in range(minval,maxval+1): count[i]=0
    for x in a: count[x]+=1
    i = 0
    for x, c in count.items():
        if c==0: continue
        a[i:i+c] = [x]*c
        i += c
arr = [9,1,22,4,0,-1,1,22,100,10]
counting_sort(arr)
print( arr )
# [-1, 0, 1, 1, 4, 9, 10, 22, 22, 100]

2 같이 보기[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}