๊ด€๋ฆฌ ๋ฉ”๋‰ด

C-log

์‹ฌ์‹ฌํ’€์ด ๋•…์ฝฉ๐Ÿฅœ : ์„ ํƒ ์ •๋ ฌ(Selection Sort) ๋ณธ๋ฌธ

๐Ÿง Algorithm/์‹ฌ์‹ฌํ’€์ด ๋•…์ฝฉ๐Ÿฅœ

์‹ฌ์‹ฌํ’€์ด ๋•…์ฝฉ๐Ÿฅœ : ์„ ํƒ ์ •๋ ฌ(Selection Sort)

4:Bee 2023. 9. 9. 22:44
728x90

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

print("selection_sort");
def selection_sort(arr):
  n = len(arr)        #๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ n์œผ๋กœ ์ €์žฅ.
  for i in range(n):  #for๋ฌธ์„ ๋Œ๋ฆฌ๊ธฐ ์œ„ํ•ด n๋งŒํ‹ˆ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ.
    min_index = i     #๊ฐ’์„ ํ•˜๋‚˜์”ฉ min_index์— ๋Œ€์ž…ํ•œ๋‹ค.
    print("i = ", i, "/", arr[i])
    for j in range(i+1, n): #i ๋‹ค์Œ ๋ฒˆ์งธ ๊ฐ’์—์„œ ๋ถ€ํ„ฐ n๋ฒˆ๊นŒ์ง€ ๋ฒ”์œ„๋ฅผ ์ง€์ •.
      print("j = ", j, "/", arr[j])
      if arr[j] < arr[min_index]:  
                                    #์ตœ์†Œ ๊ฐ’์„ ๋น„๊ตํ•œ๋‹ค. ๋งŒ์•ฝ ๋‹ค์Œ ๋ฒˆ์งธ ๊ฐ’์ด min_index๋ณด๋‹ค ํฌ๋‹ค๋ฉด ์ƒˆ๋กœ์šด min_index๋ฅผ ์ง€์ •ํ•œ๋‹ค.
        min_index = j
      print(arr)
    arr[i], arr[min_index] = arr[min_index], arr[i] #if๋ฌธ์˜ ์กฐ๊ฑด์ด์•„๋‹ˆ๋ผ for๋ฌธ์ด ๋Œ๋•Œ ๋งˆ๋‹ค ๋‘ ์ •๋ ฌ์„ ์Šค์™‘ํ•ด์ฃผ๋Š” ์—ญํ• ์ด๋‹ค. ์ฆ‰, min_index๊ฐ’์ด ๋ณ€๋™์ด ์žˆ์„ ๋•Œ ์Šค์™‘์ด ์ˆ˜ํ–‰๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
     
arr = [2,3,5,1,7,0]
selection_sort(arr)
print(arr)

์„ค๋ช…์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„์— ๊ฐ ์ฃผ์„์„ ๋„ฃ์—ˆ์œผ๋‹ˆ ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ์ด๋‹ค. ์•„๋ž˜ ์ด๋ฏธ์ง€๋Š” ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ ํ–ˆ์„ ๋•Œ์˜ ๊ฒฐ๊ณผ ๊ฐ’์ด๋‹ค.

selection_sort
[1, 2, 3, 5, 7]
728x90
Comments