๐[Sort] Radix_Sort (๊ธฐ์ ์ ๋ ฌ)
Radix_Sort (๊ธฐ์ ์ ๋ ฌ)
1. ๊ธฐ์ ์ ๋ ฌ์ด๋?
์ฃผ์ด์ง ๋ฐฐ์ด์ ์์๋ค์ ๊ฐ์ฅ ๋ฎ์ ์๋ฆฟ์๋ถํฐ ๋น๊ตํ๋ฉฐ ์ ๋ ฌํ๋ ์๊ณ ๋ฆฌ์ฆ
- stable counting sort๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋์ํจ
- ์ฅ์ : ๋น๊ต์ฐ์ฐ์ ํ์ง ์์ ์ ๋ ฌ ์๋๊ฐ ๋น ๋ฆ
- ๋จ์ : ๋ฐ์ดํฐ ์ ์ฒด ํฌ๊ธฐ์ ๊ธฐ์ ํ ์ด๋ธ์ ํฌ๊ธฐ๋งํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์
2. ๊ธฐ์ ์ ๋ ฌ์ ๋์ ๊ณผ์
- 1~10 ๊น์ง์ ๋ฐฐ์ด์ ์ ์ธํ๋ค. (A๋ผ๊ณ ํ์)
- ์ ๋ ฅ๋ฐ์ ๋ฐ์ดํฐ์ ์์๋ค์ ๋ํ์ฌ ๊ฐ์ฅ ๋ฎ์ ์๋ฆฟ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐฐ์ด-A์ ์ฐจ๋ก๋๋ก ์ ์ฅํ๋ค. (์ด์ ๋ฐ์ดํฐ์ ์์ ์์๋ฅผ ์งํจ๋ค. (stable counting sort๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ธฐ ๋๋ฌธ))
- ๋ค์์ผ๋ก ๋ฎ์ ์๋ฆฟ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ค์ ๋ฐฐ์ด-A์ ์ ์ฅํ๋ค.
- 2, 3๋ฒ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
3. ์์ ์ฝ๋
def radixSort(nums:List[int])->List[int]:
largest_num = max(nums)
digits = int(math.log10(largest_num))+1
sorted = nums
for digit in range(digits):
sorted = countingSortByDigit(nums=sorted,digit=digit)
return sorted
print(radixSort(nums=[391,582,50,924,8,192]))
๋๊ธ๋จ๊ธฐ๊ธฐ