Pseudo-code ์ค๋ช
์๋ Bubble Sort(๋ฒ๋ธ์ ๋ ฌ)์ pseudo-์ฝ๋์ด๋ค. ์ ๋ ฌ์ ํ๋ค๊ณ ํ์ ๋ ๊ฐ์ฅ ๋ ์ฌ๋ฆฌ๊ธฐ ์ฝ๊ณ ๊ตฌํํ๊ธฐ ์ฌ์ด ์๊ณ ๋ฆฌ์ฆ์ด๋ผ๊ณ ์๊ฐํ๋ค. ์ฒ์์ 2๊ฐ์ฉ ๋น๊ต๋ฅผ ํ๋ฉด์ ์ผ์ชฝ์ด ์ค๋ฅธ์ชฝ๋ณด๋ค ํฌ๋ฉด ๋ฐ๊ฟ์ ๊ฐ์ฅ ํฐ ๊ฐ์ด iteration ๋ง๋ค ๋งจ ๋ค์ ์์นํ๊ฒ ํ๋ค. (๋ฐ๋๋ก ๊ฐ์ฅ ์์ ๊ฐ์ ๋งจ ์์ผ๋ก ์์นํ๊ฒ ๋ง๋ค ์ ์๋ค)
์ด pseudo-์ฝ๋๋๋ก ์งํํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค:
- list ๋งจ์๋ถํฐ list์ ๊ธธ์ด๊น์ง iteration ์งํํ๋ค.
- list ๋๋ถํฐ ์์ํด์ ๊ทธ ์์ item๊ณผ ๋น๊ต๋ฅผ ํ๊ณ ํ item์ด ๋ ์์ผ๋ฉด swap์ ํ๋ค, ์ด๋ฌํ ๋น๊ต๋ฅผ i + 1๊น์ง iteration ์งํํ๋ค.
pseudo-์ฝ๋๋ง ๋ด๋ ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ๋ค๋ณด๋ค ๋ ๋จ์ํด๋ณด์ด๋ ๊ฒ์ ๋ณผ ์ ์๋ค. list๊ธธ์ด๋งํผ iteration์ ํ๋๋ฐ, iteration๋ง๋ค ๋์์๋ถํฐ ๋งจ ์๊น์ง ๋ค์ ํ๋ฒ iteration์ ํ๋ฉฐ item๋ผ๋ฆฌ ๋น๊ต๋ฅผ ํ๋ค. ๋ ๋ฒ์ for loop iteration์ ํ์๋ฅผ ์ ๊ณฑ๋งํผ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ ์ด sorting algorithm์ ์๊ฐ ๋ณต์ก๋๋ O(n^2)
๊ฐ ๋๋ ๊ฒ์ด๋ค.
source: programiz-bubble-sort
๊ทธ๋ฆผ์ ์๋ iteration ๊ณผ์ ์ ๊ฐ๋จํ ์ดํด๋ณด์. ํด๋น ๊ทธ๋ฆผ์ pseudo-์ฝ๋์๋ ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก ์งํ๋์ ํฐ ๊ฐ์ ๋จผ์ ๋ค๋ก ์์นํ๋ค.
๋ ๋ฒ์งธ for loop๋ด,
์ฒซ๋ฒ์งธ iteration์์ -2์ 45๋ฅผ ๋น๊ตํ๋๋ ์ค๋ฅธ์ชฝ์ ์๋ 45๊ฐ ๋ ํฌ๊ธฐ ๋๋ฌธ์ ๋ค์์ผ๋ก ๋์ด๊ฐ๋ค.
๋๋ฒ์งธ iteration์์๋ 45์ 0์ ๋น๊ตํ๊ณ 0์ด ๋ ์๊ธฐ ๋๋ฌธ์ ์๋ก์ ์์น๋ฅผ ๋ฐ๊ฟจ๋ค.
์ธ๋ฒ์งธ iteration์์๋ 45์ 11์ ๋น๊ตํ๊ณ 11์ด ๋ ์๊ธฐ ๋๋ฌธ์ ์๋ก์ ์์น๋ฅผ ๋ฐ๊ฟจ๋ค.
๋ค๋ฒ์งธ iteration์์๋ 45์ -9๋ฅผ ๋น๊ตํ๊ณ -9๊ฐ ๋ ์๊ธฐ ๋๋ฌธ์ ์๋ก์ ์์น๋ฅผ ๋ฐ๊ฟจ๋ค.
์ด๋ ๊ฒ ๋ ๋ฒ์งธ for loop์ iteration์ด ๋๋๋ฉด, ๊ฐ์ฅ ๋์ด ์ ์ผ ํฐ ๊ฐ์ผ๋ก ์ ๋ ฌ๋๋ค. ๊ทธ ๋ค์๋ฒ์์๋ ๊ฐ์ฅ ๋ง์ง๋ง item์ ์ ์ธํ๊ณ ๋๋จธ์ง item๋ผ๋ฆฌ๋ง ๋น๊ต๋ฅผ ํ๋ค.
Python Code
๊ทธ๋ฆผ๊ณผ ๋น์ทํ ๋ฐฉํฅ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ค
import random
def bubble_sort(num):
for i in range(len(num)):
for j in range(len(num)-1-i): # ๋งจ ์๋ถํฐ ๋น๊ต๋ฅผ ์์ํ๋ค
if num[j]>num[j+1]:
num[j], num[j+1] = num[j+1], num[j] # swapํ๋ค
return num
number = [i for i in range(10)]
random.shuffle(number)
print(number)
bubble = bubble_sort(number)
print(bubble)