Coding Test

์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜: ๋ฒ„๋ธ”์ •๋ ฌ, ์„ ํƒ์ •๋ ฌ

Lyla. 2023. 11. 19. 22:58

๋ฒ„๋ธ”์ •๋ ฌ ๐Ÿงผ

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

import Foundation

// ์ˆ˜์˜ ๋ฐฐ์—ด
var nums = [2,5,7,8]
var index: Int = 0

func bubbleSort() {
    for i in 0..<nums.count {
        // i๋ฅผ ๋นผ์„œ ์ˆ˜๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ๋น„๊ตํ•˜๋Š” ์ˆ˜๊ฐ€ ์ค„์–ด๋“ค๋„๋ก ํ•œ๋‹ค
        for j in 0..<(nums.count-1-i) {
            // ์•ž์—์„œ๋ถ€ํ„ฐ ๋น„๊ต
            if nums[j] > nums[j+1] {
                nums.swapAt(j, j+1)
            }
        }
    }
    print("BubbleSort: ", nums)
}

bubbleSort() //BubbleSort:  [8, 7, 5, 2]

 

์‹œ๊ฐ„๋ณต์žก๋„: O(n²)

stable Sort ์ž…๋‹ˆ๋‹ค.

 

์„ ํƒ ์ •๋ ฌ

'๊ฐ€์žฅ ์ž‘์€ ์›์†Œ๋ฅผ ์•ž์œผ๋กœ ๋ณด๋‚ด๋Š”' ์•Œ๊ณ ๋ฆฌ์ฆ˜

func selectionSort() {
    for i in 0..<list.count-1 {
    //์ธ๋ฑ์Šค๋ฅผ ์ €์žฅ
        var minIdx = i
        for j in i+1 ..< list.count {
            if list[minIdx] > list[j] {
                minIdx = j
            }
        }
        list.swapAt(minIdx, i)
    }
    print("SelectionSort: ",list)
}

๋„ฃ์„ ์ž๋ฆฌ๋Š” ์ด๋ฏธ ์ •ํ•ด์ ธ ์žˆ๊ณ , ๊ทธ ์ž๋ฆฌ์— ์•Œ๋งž์€ ์›์†Œ๋ฅผ ์„ ํƒํ•ด์„œ ๋„ฃ์Šต๋‹ˆ๋‹ค.
์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(n²)

๊ณต๊ฐ„๋ณต์žก๋„๋„ O(n²)
Unstable Sort ์ž…๋‹ˆ๋‹ค.

 

var minIdx = i

์—์„œ ์ธ๋ฑ์Šค๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ์Œ ํ™•์ธ.