Skip to content

Latest commit

ย 

History

History
50 lines (43 loc) ยท 1.78 KB

bubble-sort.md

File metadata and controls

50 lines (43 loc) ยท 1.78 KB

๋ฒ„๋ธ” ์ •๋ ฌ(bubble sort)

์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ ๊ธฐ์ค€์œผ๋กœ ์ฒซ ๋ฒˆ์งธ ๊ฐ’๊ณผ ๋‘ ๋ฒˆ์งธ ๊ฐ’์„, ๋‘ ๋ฒˆ์งธ ๊ฐ’๊ณผ ์„ธ ๋ฒˆ์งธ ๊ฐ’์„, ..., (๋งˆ์ง€๋ง‰ - 1)๋ฒˆ์งธ ๊ฐ’๊ณผ ๋งˆ์ง€๋ง‰ ๊ฐ’์„ ๋น„๊ตํ•˜์—ฌ ํฐ ๊ฐ’์„ ๋’ค๋กœ ๋ณด๋‚ด๋ฉด์„œ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•œ๋‹ค

์ฒ˜์Œ ์ •๋ ฌ ํ•œ๋’ค ๊ฐ€์žฅ ํฐ ๊ฐ’์ด ๋งจ ๋’ค๋กœ ์ด๋™ํ•˜๋ฏ€๋กœ ๊ทธ๋‹ค์Œ ์ •๋ ฌ์—์„œ๋Š” ๋งจ ๋์— ์žˆ๋Š” ๊ฐ’์€ ์ •๋ ฌ์—์„œ ์ œ์™ธ๋˜๊ณ , ๋‘ ๋ฒˆ์งธ ์ •๋ ฌ์„ ํ•œ๋’ค ๋์—์„œ ๋‘ ๋ฒˆ์งธ ๊ฐ’์€ ์ •๋ ฌ์—์„œ ์ œ์™ธ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค

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

๊ณต๊ฐ„ ๋ณต์žก๋„: O(1)

// ์˜ค๋ฆ„์ฐจ์ˆœ
function ascBubbleSort(array) {
  // ์ˆœ์ฐจ์ ์œผ๋กœ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ˜๋ณต๋ฌธ
  for (let i = 0; i < array.length - 1; i++) {
    // ๋๊นŒ์ง€ ๋Œ์•˜์„ ๋•Œ ๋‹ค์‹œ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ˜๋ณต๋ฌธ
    for (let j = 0; j < array.length - i; j++) {
      // array[j]๊ฐ’์ด arrat[j + 1]๊ฐ’๋ณด๋‹ค ํฌ๋ฉด ๋ณ€๊ฒฝ
      if (array[j] > array[j + 1]) {
        // ๋‘ ์ˆ˜๋ฅผ ์„œ๋กœ ๋ฐ”๊ฟ”์คŒ
        const temp = array[j];
        array[j] = array[j + 1];
        array[j + 1] = temp;
      }
    }
  }
  return array;
}

// ๋‚ด๋ฆผ์ฐจ์ˆœ
function descBubbleSort(array) {
  // ์ˆœ์ฐจ์ ์œผ๋กœ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ˜๋ณต๋ฌธ
  for (let i = 0; i < array.length - 1; i++) {
    // ๋๊นŒ์ง€ ๋Œ์•˜์„ ๋•Œ ๋‹ค์‹œ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ˜๋ณต๋ฌธ
    for (let j = 0; j < array.length - 1 - i; j++) {
      // array[j]๊ฐ’์ด arrat[j + 1]๊ฐ’๋ณด๋‹ค ํฌ๋ฉด ๋ณ€๊ฒฝ
      if (array[j] < array[j + 1]) {
        // ๋‘ ์ˆ˜๋ฅผ ์„œ๋กœ ๋ฐ”๊ฟ”์คŒ
        const temp = array[j];
        array[j] = array[j + 1];
        array[j + 1] = temp;
      }
    }
  }
  return array;
}

ascBubbleSort([7, 1, 5, 4, 6, 3, 2, 8]); // [ 1, 2, 3, 4, 5, 6, 7, 8 ]
descBubbleSort([7, 1, 5, 4, 6, 3, 2, 8]); // [ 8, 7, 6, 5, 4, 3, 2, 1 ]