Skip to content

Latest commit

ย 

History

History
61 lines (46 loc) ยท 2.49 KB

Bubble_Sort.md

File metadata and controls

61 lines (46 loc) ยท 2.49 KB

๋ฒ„๋ธ” ์ •๋ ฌ (Bubble Sort)

  • ๋ฒ„๋ธ” ์ •๋ ฌ์€ ์„œ๋กœ ์ธ์ ‘ํ•œ ๋‘ ์›์†Œ๋ฅผ ๋น„๊ตํ•˜์—ฌ ํฌ๊ธฐ๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด ์„œ๋กœ ๊ตํ™˜ํ•˜๋ฉฐ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.
  • ์„ ํƒ ์ •๋ ฌ๊ณผ ๊ธฐ๋ณธ ๊ฐœ๋…์ด ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ •๋ ฌ ๊ณผ์ •

  1. ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์›์†Œ๊นŒ์ง€ ์ฐจ๋ก€๋Œ€๋กœ ์ธ์ ‘ํ•œ ์›์†Œ๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
  2. ์„œ๋กœ ๋น„๊ตํ•˜์—ฌ ์•ž ์›์†Œ๊ฐ€ ๋” ํฌ๋‹ค๋ฉด ์„œ๋กœ ์œ„์น˜๋ฅผ ๊ตํ™˜ํ•ด์ค๋‹ˆ๋‹ค.
  3. ํ•œ ์‚ฌ์ดํด์ด ์™„๋ฃŒ๊ฐ€ ๋˜๋ฉด, ํ•ด๋‹น ์‚ฌ์ดํด์— ๋งˆ์ง€๋ง‰์— ์œ„์น˜์‹œํ‚จ ์›์†Œ๋Š” ์ •๋ ฌ์ด ์™„๋ฃŒ๋œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ์ด๋ ‡๊ฒŒ ํ•œ ์‚ฌ์ดํด์„ ์ˆ˜ํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ๋งˆ์ง€๋ง‰์— ์œ„์น˜์‹œํ‚จ ์›์†Œ๋Š” ์ •๋ ฌ์ด ์™„๋ฃŒ๋˜๋ฉฐ ์ •๋ ฌ์—์„œ ์ œ์™ธ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํ•˜๋‚˜์”ฉ ๋Š˜์–ด๋‚ฉ๋‹ˆ๋‹ค.

GIF๋กœ ์ดํ•ดํ•˜๊ธฐ

แ„‡แ…ฅแ„‡แ…ณแ†ฏแ„Œแ…ฅแ†ผแ„…แ…งแ†ฏ

ํŠน์ง•

  • ๊ณต๊ฐ„ ๋ณต์žก๋„
    • ์ฃผ์–ด์ง„ ๋ฐฐ์—ด ์•ˆ์—์„œ ๊ตํ™˜(swap)์„ ํ†ตํ•ด, ์ •๋ ฌ์ด ์ˆ˜ํ–‰๋˜๋ฏ€๋กœ O(n)์ž…๋‹ˆ๋‹ค.
  • ์‹œ๊ฐ„ ๋ณต์žก๋„
    • ํƒ์ƒ‰์ด (n-1)๋ฒˆ, (n-2)๋ฒˆ ... 1๋ฒˆ ์ง„ํ–‰๋˜๋ฏ€๋กœ n(n-1)/2, ์ฆ‰ O(nยฒ)์ž…๋‹ˆ๋‹ค.
    • ์ตœ์„ , ํ‰๊ท , ์ตœ์•…์˜ ๊ฒฝ์šฐ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(nยฒ)์œผ๋กœ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

์žฅ์ 

  • ๊ตฌํ˜„์ด ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ณ , ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์ง๊ด€์ ์ž…๋‹ˆ๋‹ค.
  • n๊ฐœ ์›์†Œ์— ๋Œ€ํ•ด n๊ฐœ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ์— ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์”ฉ ์ •๋ฐ€ ๋น„๊ต๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋‹จ์ 

  • ์ตœ์„ ์ด๋“  ์ตœ์•…์ด๋“  O(nยฒ)์ด๋ผ๋Š” ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋น„ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.
  • ์›์†Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๋ฉด ๋น„๊ต ํšŸ์ˆ˜๊ฐ€ ๋งŽ์•„์ ธ ์„ฑ๋Šฅ์ด ์ €ํ•˜ ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ ์˜ˆ์ œ (Baekjoon)

๋ฐฑ์ค€ - ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ

๋ฌธ์ œ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-01-18 แ„‹แ…ฉแ„’แ…ฎ 6 01 12

ํ’€์ด

ํžŒํŠธ๋ฅผ ๋ณด๋ฉด ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(nยฒ)์ธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ๋„ ํ’€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ(Python)

n = int(input())
numbers = []

for _ in range(n):
    numbers.append(int(input()))

# Bubble Sort
for i in range(n - 1): 
    for j in range(n - (i + 1)): 
        if numbers[j] >= numbers[j + 1]: # 1.
            numbers[j], numbers[j + 1] = numbers[j + 1], numbers[j] # 2.

for n in numbers:
    print(n)
  1. ๋งŒ์•ฝ ์•ž์˜ ์›์†Œ๊ฐ€ ๋’ค์˜ ์›์†Œ๋ณด๋‹ค ํฌ๋‹ค๋ฉด
  2. ๋‘ ๊ฐœ์˜ ์ž๋ฆฌ๋ฅผ ๋ฐ”๊ฟ”์ค๋‹ˆ๋‹ค.

Reference