๊นจ์•Œ ๊ฐœ๋… ๐Ÿ“‘/์•Œ๊ณ ๋ฆฌ์ฆ˜

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

interfacer_han 2023. 11. 13. 11:54

#1 ์•Œ๊ณ ๋ฆฌ์ฆ˜

#1-1

์ •๋ ฌ ๋ฐฉ์‹์ด ๋งˆ์น˜ ๊ฑฐํ’ˆ์ด ์ˆ˜์ค‘์— ์žˆ๋‹ค๊ฐ€ ์ˆ˜๋ฉด ์œ„๋กœ ๋ณด๊ธ€๋ณด๊ธ€ ์˜ฌ๋ผ๊ฐ€๋Š” ๋ชจ์Šต๊ณผ ๋น„์Šทํ•ด์„œ ๋ฒ„๋ธ” ์ •๋ ฌ์ด๋ผ๊ณ  ์ด๋ฆ„ ๋ถ™์—ฌ์กŒ๋‹ค. ๊ธฐ๋ณธ์ ์ธ ๋ฒ„๋ธ” ์ •๋ ฌ์€, ์ •๋ ฌ ์ž‘์—…์„ ์‹œ์ž‘ํ•  ๋•Œ ์ค‘๊ฐ„์— ๋ฐฐ์—ด ์ด๋ฏธ ์ •๋ ฌ๋œ ์ƒํƒœ์—ฌ๋„ maxIndex๊ฐ€ 1์ด ๋˜๋Š” ๋งˆ์ง€๋ง‰ ๋ฐ˜๋ณต๊นŒ์ง€ ๋ฌด์˜๋ฏธํ•œ ์ˆœํ™˜์„ ๊ณ„์†ํ•œ๋‹ค. ์ด ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ํ•œ ๊ฐ€์ง€ ์žฅ์น˜๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ทธ๊ฑธ ํ–ฅ์ƒ๋œ ๋ฒ„๋ธ” ์ •๋ ฌ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

 

#2-1

๋ฐ˜๋“œ์‹œ n * (n - 1) / 2๋ฒˆ์˜ ๋น„๊ต๋ฅผ ํ•˜๋Š” ์ผ๋ฐ˜ ๋ฒ„๋ธ” ์ •๋ ฌ์— ๋น„ํ•ด, ํ–ฅ์ƒ๋œ ๋ฒ„๋ธ” ์ •๋ ฌ์€ ๋น„๊ต ํšŸ์ˆ˜๋ฅผ ์ตœ์†Œ (n - 1)๋ฒˆ๊นŒ์ง€ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ๋‹ค.

 

#2 ์ฝ”๋“œ

#2-1 ์ž๋ฐ”

public static void bubbleSort(int[] array, int startIndex, int endIndex) {
    
    for(int maxIndex = endIndex; startIndex < maxIndex; maxIndex--) {
        boolean isSorted = true;
        
        // ๋ฐฐ์—ด์˜ 0 ~ (maxIndex - 1)๋ฒˆ์งธ ์›์†Œ๋ฅผ ์ˆœํšŒํ•œ๋‹ค 
        for(int i = 0; i < maxIndex; i++) {
            
            //ํ•ด๋‹น ์›์†Œ๊ฐ€ ๋ฐ”๋กœ ์˜ค๋ฅธ์ชฝ ์›์†Œ๋ณด๋‹ค ํฌ๋ฉด ๊ฐ’์„ ์„œ๋กœ ๊ตํ™˜ํ•œ๋‹ค 
            if(array[i + 1] < array[i]) {                    
                int temp = array[i + 1];
                array[i + 1] = array[i];
                array[i] = temp;
                
                isSorted = false;
            }
        }
        
        // ๊ตํ™˜์ด ํ•œ๋ฒˆ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์ •๋ ฌ ์ž‘์—…์„ ์ข…๋ฃŒํ•œ๋‹ค
        if(isSorted) {
            break;
        }
    }
}

 

#2-2 ์ฝ”ํ‹€๋ฆฐ

fun bubbleSort(array: Array<Int>, startIndex : Int, endIndex : Int) {

    for(maxIndex : Int in endIndex downTo (startIndex + 1)) {
        var isSorted = true

        // ๋ฐฐ์—ด์˜ 0 ~ (maxIndex - 1)๋ฒˆ์งธ ์›์†Œ๋ฅผ ์ˆœํšŒํ•œ๋‹ค
        for(i : Int in 0..(maxIndex - 1)) {

            // ํ•ด๋‹น ์›์†Œ๊ฐ€ ๋ฐ”๋กœ ์˜ค๋ฅธ์ชฝ ์›์†Œ๋ณด๋‹ค ํฌ๋ฉด ๊ฐ’์„ ์„œ๋กœ ๊ตํ™˜ํ•œ๋‹ค
            if(array[i + 1] < array[i]) {
                val temp = array[i + 1]
                array[i + 1] = array[i]
                array[i] = temp

                isSorted = false
            }
        }

        // ๊ตํ™˜์ด ํ•œ๋ฒˆ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์ •๋ ฌ ์ž‘์—…์„ ์ข…๋ฃŒํ•œ๋‹ค
        if(isSorted) {
            break
        }
    }
}

 

#3 ์š”์•ฝ

๋ฒ„๋ธ” ์ •๋ ฌ์€ ๋ฌผ ์†์˜ '๊ฑฐํ’ˆ'์ฒ˜๋Ÿผ ์ธ๋ฑ์Šค๋ฅผ ์˜ฌ๋ผ๊ฐ€๋ฉด์„œ, ํ•„์š”ํ•˜๋ฉด ๊ฐ’์„ ๊ตํ™˜ํ•˜๋Š” ์ •๋ ฌ์ด๋‹ค

 

#4 ์ด ๊ฐœ๋…์ด ์‚ฌ์šฉ๋œ ๊ธ€

 

2750 - ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ

#1 ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฒ„๋ธ” ์ •๋ ฌ (Bubble Sort) #1 ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •๋ ฌ ๋ฐฉ์‹์ด ๋งˆ์น˜ ๊ฑฐํ’ˆ์ด ์ˆ˜์ค‘์— ์žˆ๋‹ค๊ฐ€ ์ˆ˜๋ฉด ์œ„๋กœ ๋ฝ€๊ธ€๋ฝ€๊ธ€ ์˜ฌ๋ผ๊ฐ€๋Š” ๋ชจ์Šต๊ณผ ๋น„์Šทํ•ด์„œ ๋ฒ„๋ธ” ์ •๋ ฌ์ด๋ผ๊ณ  ์ด๋ฆ„ ๋ถ™์—ฌ์กŒ๋‹ค. ๊ธฐ๋ณธ์ ์ธ ๋ฒ„๋ธ” ์ •๋ ฌ์€, ์ •

kenel.tistory.com