GnomeSort

Gnome Sort์™€ ๊ฐ™์€ ๋ณต์žกํ•œ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋จผ์ € ์‹œ๋„ํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Gnome Sort๋Š” ๋ฒ„๋ธ” ์ •๋ ฌ๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ, ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜์ง€ ์•Š์„ ๋•Œ ๋‹ค์‹œ ๋’ค๋กœ ๋Œ์•„๊ฐ€๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.

fun gnomeSort(arr: IntArray) {
    var index = 0
    while (index < arr.size) {
        if (index == 0 || arr[index] >= arr[index - 1]) {
            index++
        } else {
            val temp = arr[index]
            arr[index] = arr[index - 1]
            arr[index - 1] = temp
            index--
        }
    }
}

fun main() {
    val arr = intArrayOf(34, 2, 78, 1, 56, 44, 3, 99)
    gnomeSort(arr)
    println(arr.joinToString(", "))
}

์ž‘์€ ๊ฐ’์ด ๋‚˜์˜ฌ ๋•Œ๋งˆ๋‹ค ๋’ค๋กœ ๋Œ์•„๊ฐ€๋ฉด์„œ ๊ทธ ์•ž๊ณผ ๋น„๊ตํ•ด ์œ„์น˜๋ฅผ ๊ต์ฒดํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

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

Last updated