Bucket Sort(λ²ν·μ λ ¬)μ 리μ€νΈ λ΄μ κ°λ€μ΄ λ²μ λ΄μ μΌμ νκ² λΆν¬λμ΄ μμ λ μ¬μ©νλ κ²μ΄ κ°μ₯ μ ν©νλ€. 0~1 μ¬μ΄μ μ«μλ€μ μ λ ¬νλ κ²κ³Ό κ°μ κ²½μ°μ μ΄ bucket sortλ₯Ό μ¬μ©ν μ μλ€.
μ΄ μ λ ¬ μκ³ λ¦¬μ¦μ μ½κ² μ€λͺ νμλ©΄, 리μ€νΈ λ΄μ κ°λ€μ νΌμ§νκ² λΆλ₯ν μ μμλ§ν μΉ΄ν κ³ λ¦¬ νΉμ λ²ν·λ€μ λ§λ λ€. κ·Έ λ€μμ 리μ€νΈμμ λ²ν·μ ν¬ν¨λλ κ°λ€μ μ λ ¬νλ€. λ§μ§λ§μλ, λ²ν·λ€μ κΈ°μ€μΌλ‘ μ λ ¬μ νλ€. μ€λͺ μ μ΄λ ΅μ§λ§ κ·Έλ¦ΌμΌλ‘ 보면 μ΄ν΄κ° λ μ½κ² λλ€.
0~1 μ¬μ΄ κ°λ€μ μ§λ 리μ€νΈκ° μλ€κ³ κ°μ ν΄λ³΄μ.
- Input Arrayμ κ°λ€μ μΌμ ν κ°λ€μ κΈ°μ€μΌλ‘ λ²ν·μΌλ‘ λλλ€. μ΄ λ λ²ν·μ κ°―μλ μ£Όμ΄μ§ 리μ€νΈμ κΈΈμ΄λ₯Ό κ°κ² λ§λ€μ΄μ λΆλ₯λ₯Ό νλ€.
- κ·Έ λ€μμλ κ° λ²ν·μ ν΄λΉλλ κ°μ κΈ°μ‘΄ 리μ€νΈμ κ°λ€μ μ§μ΄λ£λλ€. μ΄ λ μ§μ΄λ£μΌλ©΄μ μ λ ¬μ νλ€. μ¬κΈ°μ μ¬μ©λλ μκ³ λ¦¬μ¦μ μ΄μ μ λ°°μ λ μ λ ¬ μκ³ λ¦¬μ¦μ μ¬μ©ν΄λ λ¨λ€.
- λ§μ§λ§μΌλ‘ λ²ν·λ€μ λ€ μ΄μ΄μ μ λ ¬λ νλμ 리μ€νΈλ₯Ό λ§λ λ€.
Python Code
def bucket_sort(num):
# λ²ν·μ λ΄μ λΉμ΄ μλ listλ₯Ό νλ μμ±νλ€
arr = [[] for _ in range(len(num))]
# λ²ν·μλ€ κ°κ° elementsλ€μ λ£λλ€
# ex. 0.78 * 10 = 7.8
# int(7.8)μ ν΄μ arr[7] λ²ν·μ ν΄λΉ κ°μ λ£λλ€
for n in num:
index = int(len(num) * n)
arr[index].append(n)
# κ° sub listλ€μ μ λ ¬νλ€
for i in range(len(num)):
arr[i] = insertion_sort(arr[i])
# κ° λ²ν·λ€μ μ°κ²°νλ€
k = 0
for i in range(len(num)):
for j in range(len(arr[i])):
num[k] = arr[i][j]
k += 1
return num
number = [0.78, 0.17, 0.39, 0.26, 0.72, 0.94, 0.21, 0.12, 0.23, 0.68]
print(number)
bucket = bucket_sort(number)
print(bucket)