Skip to content

Latest commit

ย 

History

History
58 lines (42 loc) ยท 2.22 KB

Selection_Sort.md

File metadata and controls

58 lines (42 loc) ยท 2.22 KB

์„ ํƒ ์ •๋ ฌ (Selection Sort)

์„ ํƒ์ •๋ ฌ์€ ํ˜„์žฌ ์œ„์น˜์— ๋“ค์–ด๊ฐˆ ๊ฐ’์„ ์ฐพ์•„์„œ ๋ฐ”๊พธ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.

์ •๋ ฌ ๊ณผ์ •

  1. ํ˜„์žฌ ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๊ฐ€์žฅ ๋งจ ์•ž์˜ ์ธ๋ฑ์Šค๋ฅผ ์„ ํƒํ•œ๋‹ค.
  2. ํ˜„์žฌ ์ธ๋ฑ์Šค์˜ ๋‹ค์Œ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์ฐพ์œผ๋ฉด ํ˜„์žฌ ์ธ๋ฑ์Šค์˜ ๊ฐ’๊ณผ ๋ฐ”๊ฟ”์ค€๋‹ค.
  3. ๋‹ค์Œ ์ธ๋ฑ์Šค์—์„œ ์œ„ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

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

์„ ํƒ์ •๋ ฌ

ํŠน์ง•

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

# Selection Sort
for i in range(n):                      
    for j in range(i + 1, n):           
        if numbers[i] > numbers[j]:     
            numbers[i], numbers[j] = numbers[j], numbers[i]
            
for n in numbers:
    print(n)

Reference