CS/Algorithm

๋ฒ„๋ธ” ์ •๋ ฌ(bubble sort)

deo2kim 2020. 9. 21. 13:08
๋ฐ˜์‘ํ˜•

๐Ÿ“” ๋ฒ„๋ธ” ์ •๋ ฌ(bubble sort) ์ด๋ž€

  • ์„œ๋กœ ์ธ์ ‘ํ•œ ๋‘ ์›์†Œ์˜ ๋Œ€์†Œ๋ฅผ ๋น„๊ตํ•˜์—ฌ ์ •๋ ฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • 2๊ฐœ์˜ ๋ฐ˜๋ณต๋ฌธ์„ ์ค‘์ฒฉํ•ด์„œ ๊ตฌํ˜„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(n^2)
  • ์˜ค๋ฆ„์ฐจ์ˆœ์˜ ๊ฒฝ์šฐ 1์„ธํŠธ(๋ฐ”๊นฅ์ชฝ ๋ฐ˜๋ณต๋ฌธ)์ด ๋๋‚˜๋ฉด ๊ฐ€์žฅ ํฐ ์ˆ˜๊ฐ€ ๋งจ ๋’ค์— ์˜ค๊ฒŒ ๋œ๋‹ค.
    ๋‚ด๋ฆผ์ฐจ์ˆœ์˜ ๊ฒฝ์šฐ ๋ฐ˜๋Œ€

 

๐Ÿ“” ๋ฒ„๋ธ” ์ •๋ ฌ(bubble sort) ์˜ˆ์ œ

  • ์œ„์˜ ์˜ˆ์ œ๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ์ผ ๊ฒฝ์šฐ์˜ ์˜ˆ์ œ์ด๋‹ค.
  • ์•ž๋’ค์˜ ์ˆซ์ž๋ฅผ ๋น„๊ตํ•ด์„œ ์•ž์˜ ์ˆซ์ž๊ฐ€ ํฌ๋ฉด ๋’ค์˜ ์ˆซ์ž๋ž‘ ๋ฐ”๊พผ๋‹ค.
  • 1์„ธํŠธ๊ฐ€ ๋๋‚˜๋ฉด ๊ฐ€์žฅ ํฐ ์ˆ˜๊ฐ€ ๋งจ ๋’ค๋กœ ์˜จ๋‹ค. 
  • ๋‹ค์Œ ์„ธํŠธ๋ถ€ํ„ฐ๋Š” ๋งจ ๋’ค์˜ ์ˆซ์ž๋ฅผ ๋นผ๊ณ  ๋น„๊ต๋ฅผ ํ•ด์ค€๋‹ค. (์ด๋ฏธ ๊ฐ€์žฅ ํฐ ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ)

 

๐Ÿ“” ๋ฒ„๋ธ” ์ •๋ ฌ(bubble sort) ๊ตฌํ˜„

numbers = [5, 3, 8, 1, 2]
print(f'์ •๋ ฌ ์ „: {numbers}')
print()
for i in range(len(numbers)):
    print(f'{i + 1}์„ธํŠธ')
    for j in range(len(numbers) - 1 - i):
        if numbers[j] > numbers[j + 1]:
            numbers[j], numbers[j + 1] = numbers[j + 1], numbers[j]
            print(f'์ •๋ ฌ ์ค‘: {numbers}')
print()
print(f'์ •๋ ฌ ํ›„: {numbers}')

 

๐Ÿ“” ๋ฒ„๋ธ” ์ •๋ ฌ(bubble sort) ํŠน์ง•

  • ์žฅ์ 
    • ๋‹จ์ˆœํ•œ ๊ตฌํ˜„
  • ๋‹จ์ 
    • ์ •๋ ฌ์ด ๋ถˆํ•„์š”ํ•œ ์š”์†Œ์—๋„ ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค.
    • ์‹œ๊ฐ„๋ณต์žก๋„ O(n^2)
  • ๊ตฌํ˜„์ด ๊ฐ„๋‹จํ•˜์ง€๋งŒ ๋งค์šฐ ๋น„ํœผ์ ์ด๋ฏ€๋กœ ๊ฑฐ์˜ ์“ฐ์ด์ง€ ์•Š์Œ.

 

๐Ÿ“” ๋ฒ„๋ธ” ์ •๋ ฌ(bubble sort) ์ฐธ๊ต์ž๋ฃŒ

์ฒ˜์Œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ฐฐ์šธ ๋•Œ ๊ฐ•์‚ฌ๋‹˜๊ป˜์„œ ๋ณด์—ฌ์ค€ ์ž๋ฃŒ๊ฐ€ ์ƒ๊ฐ๋‚ฌ๋‹ค.

์•„์˜ˆ ์ฒ˜์Œ์ด์‹  ๋ถ„์€ ๋ณด๋Š” ๊ฒƒ์„ ์ถ”์ฒœ

๋ฒ„๋ธ”์ •๋ ฌ

 

๋ฐ˜์‘ํ˜•