์‚ฝ์ž… ์ •๋ ฌ์˜ ๊ฐœ๋…์€ ๋งค์šฐ ๊ฐ„๋‹จํ•˜๋‹ค.

 

์™ผ์ชฝ์˜ ์š”์†Œ์™€ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•˜์—ฌ, ๋” ํฐ ๊ฐ’์„ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์˜ฎ๊ธฐ๋‹ค ๋ณด๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์™ผ์ชฝ๋ถ€ํ„ฐ ์ž‘์€ ์ˆ˜๊ฐ€ ๋‚˜์—ด๋˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

ํ•˜์ง€๋งŒ ์‚ฝ์ž… ์ •๋ ฌ์„ ๊ตฌํ˜„ํ•œ for๋ฌธ ์•ˆ์— while๋ฌธ์ด ๋“ค์–ด๊ฐ„ ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ์žˆ์ž๋‹ˆ, ๋ชจ๋“  ๊ณผ์ •์ด ์ง๊ด€์ ์œผ๋กœ ์ดํ•ด๋˜์ง€๋Š” ์•Š์•˜๋‹ค.

 

๊ทธ๋ž˜์„œ ์ง์ ‘ ํฌ์ŠคํŠธ์ž‡์— ์š”์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ์ ์–ด๊ฐ€๋ฉฐ, ๋ชจ๋“  ๊ณผ์ •์„ ๊ณ„์‚ฐํ•˜๊ณ  ํ๋ฆ„์„ ๋”ฐ๋ผ๊ฐ€ ๋ณด์•˜๋‹ค.

ํŠนํžˆ while๋ฌธ์— ์ต์ˆ™ํ•˜์ง€ ์•Š๋‹ค ๋ณด๋‹ˆ, ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜์–ด ์‹คํ–‰๋œ ์ดํ›„ j–๋กœ ์ธํ•ด ๋ฐ˜๋ณต๋ฌธ์˜ ์กฐ๊ฑด์ด ๋‹ค์‹œ ํ™•์ธ๋˜๋Š” ๊ณผ์ •์„ ๋†“์น˜๊ธฐ ์‰ฌ์› ๋‹ค.

j– ์ดํ›„์—๋Š” ์กฐ๊ฑด์„ ๋‹ค์‹œ ํ™•์ธํ•˜์—ฌ ๋ฐ˜๋ณต๋ฌธ์„ ๊ณ„์† ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ์ข…๋ฃŒ๋ฅผ ๊ฒฐ์ •ํ•ด์•ผ ํ•˜๋Š”๋ฐ,

๋‚˜๋Š”  j–๊ฐ€ ์‹คํ–‰๋œ ์งํ›„ ๋ฐ”๋กœ while๋ฌธ์„ ๋ฒ—์–ด๋‚˜ ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์ ์šฉํ•˜๋Š” ์‹ค์ˆ˜๋ฅผ ํ•˜๊ณค ํ–ˆ๋‹ค.

 

๋˜ ๋‹ค๋ฅธ ์‹ค์ˆ˜๋กœ๋Š”, ์š”์†Œ๋ฅผ ์ด๋™ํ•œ ํ›„ ์›๋ž˜ ์ž๋ฆฌ์˜ ๊ฐ’์„ ์ ์šฉํ•˜์ง€ ๋ง์•„์•ผ ํ•จ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ์ž˜๋ชป๋œ ๊ฐ’์„ ์ ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์—ˆ๋‹ค.

 

์ด๋Ÿฌํ•œ ์‹ค์ˆ˜๋“ค์„ ๊ฒช์œผ๋ฉฐ, ๋‚ด๊ฐ€ while๋ฌธ์—์„œ ๋†“์น˜๊ณ  ์žˆ๋˜ ๊ณผ์ •๊ณผ ํ๋ฆ„์„ ๋ช…ํ™•ํžˆ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๋•๋ถ„์— ๋ฐ˜๋ณต๋ฌธ์˜ ์‹คํ–‰ ํ๋ฆ„๊ณผ ์กฐ๊ฑด ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ๋” ๊นŠ๊ฒŒ ๋‹ค์งˆ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 


ํž˜๋“  ์„ฑ๊ณต..


j--๋Š” ๋น„๊ต๋ฅผ ์œ„ํ•ด ํ˜„์žฌ ์ธ๋ฑ์Šค์˜ ๋ฐ”๋กœ ์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋ฉฐ,
๋น„๊ต ๋Œ€์ƒ์€ ํ•ญ์ƒ i๋ฒˆ์งธ ์š”์†Œ์ธ key ๊ฐ’์ด๋‹ค.

์ฆ‰, while ๋ฌธ ์•ˆ์—์„œ ๋น„๊ต๊ฐ€ ์ด๋ฃจ์–ด์ง€๊ณ , 
์™ผ์ชฝ ๊ฐ’์ด key๋ณด๋‹ค ํด ๊ฒฝ์šฐ ํ•ด๋‹น ๊ฐ’์„ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์˜ฎ๊ธด๋‹ค.

์ด ๊ณผ์ •์—์„œ key ๊ฐ’์€ ๋ณ€ํ•˜์ง€ ์•Š๊ณ  ๊ณ ์ •๋œ ์ƒํƒœ์—์„œ ๋น„๊ต์™€ ์ด๋™ ์ž‘์—…์ด ๋ฐ˜๋ณต์ ์œผ๋กœ ์ˆ˜ํ–‰๋œ๋‹ค.

 

i๋ฒˆ์งธ ์š”์†Œ์˜ ๊ฐ’(key)์€ while ๋ฌธ์ด ๋๋‚œ ํ›„์— ๋น„๋กœ์†Œ ์ž๋ฆฌ๋ฅผ ์žก๊ฒŒ ๋œ๋‹ค.

์ด๋•Œ, key๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ์œ„์น˜๋Š” while ๋ฌธ์˜ ์กฐ๊ฑด์ด ๋” ์ด์ƒ ์ถฉ์กฑ๋˜์ง€ ์•Š๋Š” ์ง€์ 
(์ฆ‰, 
key๋ณด๋‹ค ์ž‘์€ ๊ฐ’์ด๊ฑฐ๋‚˜ ์ธ๋ฑ์Šค๊ฐ€ 0๋ณด๋‹ค ์ž‘์€ ์œ„์น˜) ๋ฐ”๋กœ ์˜ค๋ฅธ์ชฝ์ด๋‹ค.


๊ฒฐ๊ณผ์ ์œผ๋กœ, 
key๋Š” ์ž์‹ ๋ณด๋‹ค ์ž‘์€ ๊ฐ’ ๋ฐ”๋กœ ์˜ค๋ฅธ์ชฝ์— ์œ„์น˜ํ•˜๋ฉฐ, 
key์˜ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ๊ฐ’๋“ค์€ ๋ชจ๋‘ key๋ณด๋‹ค ํฐ ๊ฐ’๋“ค๋กœ ์ •๋ ฌ๋œ๋‹ค.

์ด ์›๋ฆฌ์— ๋”ฐ๋ผ ์‚ฝ์ž… ์ •๋ ฌ์ด ์ด๋ฃจ์–ด์ง„๋‹ค


 

์‚ฝ์ž…์ •๋ ฌ์˜ ๊ฐœ๋…

์‚ฝ์ž…์ •๋ ฌ(Insertion Sort)์€ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜๋กœ,

์ด๋ฏธ ์ •๋ ฌ๋œ ๋ถ€๋ถ„๊ณผ ๊ทธ๋ ‡์ง€ ์•Š์€ ๋ถ€๋ถ„์„ ๋‚˜๋ˆ„๊ณ , ์ •๋ ฌ๋˜์ง€ ์•Š์€ ์š”์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ์ •๋ ฌ๋œ ๋ถ€๋ถ„์œผ๋กœ ์‚ฝ์ž…ํ•ด ๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

 

 ํ•ต์‹ฌ ์•„์ด๋””์–ด

๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋Š” ์ด๋ฏธ ์ •๋ ฌ๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ , ๋‘ ๋ฒˆ์งธ ์š”์†Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๊ฐ ์š”์†Œ๋ฅผ ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž…ํ•œ๋‹ค.

 

 

์‚ฝ์ž…์ •๋ ฌ์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์™€ ์ ํ•ฉํ•œ ์ƒํ™ฉ

์‚ฝ์ž…์ •๋ ฌ์€ ๊ฐ„๋‹จํ•˜๊ณ  ์ง๊ด€์ ์ด์ง€๋งŒ, ํฐ ๋ฐ์ดํ„ฐ์…‹์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.
ํ•˜์ง€๋งŒ ์ž‘์€ ๋ฐ์ดํ„ฐ์…‹์ด๋‚˜ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ์—์„œ๋Š” ๋งค์šฐ ํšจ๊ณผ์ ์ด๋‹ค.

์žฅ์ 

  1. ๊ฐ„๋‹จํ•œ ๊ตฌํ˜„: ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ง๊ด€์ ์ด๊ณ  ๊ฐ„๋‹จํ•˜์—ฌ ๋ฐฐ์šฐ๊ธฐ ์‰ฝ๋‹ค.

  2. ์ ์€ ๋ฐ์ดํ„ฐ์—์„œ ํšจ์œจ์ : ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘๊ฑฐ๋‚˜, ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฑฐ์˜ ์ •๋ ฌ๋œ ๊ฒฝ์šฐ ๋งค์šฐ ๋น ๋ฅด๋‹ค.

  3. ์ œ์ž๋ฆฌ ์ •๋ ฌ: ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ •๋ ฌ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

์ ํ•ฉํ•œ ์ƒํ™ฉ

  - ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘์„ ๋•Œ.

  - ๋ฐ์ดํ„ฐ๊ฐ€ ์ด๋ฏธ ์ •๋ ฌ๋˜์–ด ์žˆ๊ฑฐ๋‚˜, ๊ฑฐ์˜ ์ •๋ ฌ๋œ ์ƒํƒœ์ผ ๋•Œ.

  - ์•ˆ์ •์ ์ธ ์ •๋ ฌ(Stable Sort)์ด ํ•„์š”ํ•  ๋•Œ.

 

์‚ฝ์ž…์ •๋ ฌ์˜ ๋…ผ๋ฆฌ์  ํ๋ฆ„๊ณผ ๊ณผ์ •

1. ๋ฐฐ์—ด์˜ ๋‘ ๋ฒˆ์งธ ์š”์†Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค. (์ธ๋ฑ์Šค 1)

2. ํ˜„์žฌ ์š”์†Œ๋ฅผ “ํ‚ค(key)“๋กœ ์„ค์ •ํ•œ๋‹ค.

3. ํ‚ค์˜ ์™ผ์ชฝ ์š”์†Œ๋“ค๊ณผ ๋น„๊ตํ•˜๋ฉด์„œ, ํ‚ค๋ณด๋‹ค ํฐ ๊ฐ’์ด ์žˆ๋‹ค๋ฉด ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ์นธ์”ฉ ์ด๋™์‹œํ‚จ๋‹ค.

4. ๋น„๊ต๊ฐ€ ๋๋‚˜๋ฉด ํ‚ค๋ฅผ ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž…ํ•œ๋‹ค.

5. ๋ฐฐ์—ด ๋๊นŒ์ง€ ์œ„ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

์‹œ๊ฐ„ ๋ณต์žก๋„:

    ์ตœ์•…์˜ ๊ฒฝ์šฐ(์—ญ์ˆœ ๋ฐฐ์—ด): O(n^2) 

    ์ตœ์„ ์˜ ๊ฒฝ์šฐ(์ด๋ฏธ ์ •๋ ฌ๋œ ๋ฐฐ์—ด): O(n)

   • ํ‰๊ท ์˜ ๊ฒฝ์šฐ: O(n^2)

 

๊ณต๊ฐ„ ๋ณต์žก๋„: O(1) (์ œ์ž๋ฆฌ ์ •๋ ฌ, ์ถ”๊ฐ€ ๊ณต๊ฐ„ ํ•„์š” ์—†์Œ)

 


์‚ฝ์ž…์ •๋ ฌ์˜ ์ž๋ฐ” ๊ตฌํ˜„ ์˜ˆ์ œ

public class InsertionSort {
   public static void main(String[] args) {
      int[] array = {5, 2, 4, 6, 1, 3};
      
      System.out.println("์ •๋ ฌ ์ „:");
      printArray(array);
      
      insertionSort(array);
      
      System.out.println("์ •๋ ฌ ํ›„: ");
      printArray(array);
   }
   public staic void insertionSort(int[] array) {
       // ๋‘ ๋ฒˆ์งธ ์š”์†Œ๋ถ€ํ„ฐ ์‹œ์ž‘
       for (int i = 1; i < array.length; i++) {
          int key = array[i]; //ํ˜„์žฌ ์š”์†Œ๋ฅผ ํ‚ค๋กœ ์„ค์ •
          int j = i -1;
          
          // ์ •๋ ฌ๋œ ๋ถ€๋ถ„์˜ ์š”์†Œ๋“ค๊ณผ ํ‚ค๋ฅผ ๋น„๊ต
          while (j >= 0 && array[j]> key) {
             array[j + 1] = array[j]; // ํ‚ค๋ณด๋‹ค ํฐ ๊ฐ’์„ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™
             j--;
          }
          // ํ‚ค๋ฅผ ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž…
          array[j + 1] = key;
       }
   }
   
   publid static void printArray(int[] array) {
      for (int num : array) {
          System.out.print(num + " ");
      }
      System.out.println();
   }
}

 

1. for (int i = 1; i < array.length; i++)

์˜๋ฏธ: ๋ฐฐ์—ด์˜ ๋‘ ๋ฒˆ์งธ ์š”์†Œ(์ธ๋ฑ์Šค 1)๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์š”์†Œ๊นŒ์ง€ ๋ฐ˜๋ณต์„ ์‹œ์ž‘ํ•œ๋‹ค.

์ด์œ : ์‚ฝ์ž…์ •๋ ฌ์€ ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์ด๋ฏธ ์ •๋ ฌ๋œ ์ƒํƒœ๋กœ ๊ฐ„์ฃผํ•œ๋‹ค.

           ๋”ฐ๋ผ์„œ ๋‘ ๋ฒˆ์งธ ์š”์†Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ์ •๋ ฌ๋˜์ง€ ์•Š์€ ์š”์†Œ๋ฅผ ์ •๋ ฌ๋œ ๋ถ€๋ถ„์— ์‚ฝ์ž…ํ•œ๋‹ค.

 

2. int key = array[i];

์˜๋ฏธ: ํ˜„์žฌ ์š”์†Œ(์ธ๋ฑ์Šค i)๋ฅผ “ํ‚ค(key)“๋กœ ์„ค์ •ํ•œ๋‹ค.

์ด์œ : ํ‚ค๋Š” ์ •๋ ฌ๋œ ๋ถ€๋ถ„์— ์‚ฝ์ž…ํ•˜๋ ค๋Š” ๋Œ€์ƒ์ด๋‹ค.

           ์ด ํ‚ค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ์— ์žˆ๋Š” ์ •๋ ฌ๋œ ๋ถ€๋ถ„๊ณผ ๋น„๊ตํ•˜๋ฉฐ ์‚ฝ์ž…ํ•  ์œ„์น˜๋ฅผ ์ฐพ์•„์•ผ ํ•œ๋‹ค.

 

3. int j = i - 1;

์˜๋ฏธ: ํ‚ค์˜ ๋ฐ”๋กœ ์™ผ์ชฝ์— ์žˆ๋Š” ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ j์— ์ €์žฅํ•œ๋‹ค.

์ด์œ : ํ‚ค๋ฅผ ์ •๋ ฌ๋œ ๋ถ€๋ถ„๊ณผ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด ์‹œ์ž‘์ ์„ ์„ค์ •ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค. j๋Š” ์ •๋ ฌ๋œ ๋ถ€๋ถ„์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

 

4. while (j >= 0 && array[j] > key)

์˜๋ฏธ: ์ •๋ ฌ๋œ ๋ถ€๋ถ„(์™ผ์ชฝ)์— ์žˆ๋Š” ์š”์†Œ๋“ค๊ณผ ํ‚ค๋ฅผ ๋น„๊ตํ•˜๋Š” ๋ฃจํ”„์ด๋‹ค.

         • j >= 0: ์ •๋ ฌ๋œ ๋ถ€๋ถ„์˜ ๋ฒ”์œ„๋ฅผ ์ดˆ๊ณผํ•˜์ง€ ์•Š๋„๋ก ์กฐ๊ฑด์„ ์„ค์ •ํ•œ๋‹ค.

         • array[j] > key: ์ •๋ ฌ๋œ ์š”์†Œ๊ฐ€ ํ‚ค๋ณด๋‹ค ํฌ๋‹ค๋ฉด, ํ•ด๋‹น ์š”์†Œ๋Š” ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•ด์•ผ ํ•œ๋‹ค.

์ด์œ : ์‚ฝ์ž…์ •๋ ฌ์˜ ํ•ต์‹ฌ ๋™์ž‘์œผ๋กœ, ํ‚ค๊ฐ€ ์‚ฝ์ž…๋  ์ ์ ˆํ•œ ์œ„์น˜๋ฅผ ์ฐพ๋Š” ๊ณผ์ •์ด๋‹ค.

 ์ •๋ ฌ๋œ ๋ถ€๋ถ„์˜ ์š”์†Œ ์ค‘์—์„œ ํ‚ค๋ณด๋‹ค ํฐ ๊ฐ’์„ ๋ชจ๋‘ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚จ๋‹ค.

 

5. array[j + 1] = array[j];

์˜๋ฏธ: ํ˜„์žฌ ์š”์†Œ(array[j])๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ์นธ ์ด๋™ํ•œ๋‹ค.

์ด์œ : ํ‚ค๋ณด๋‹ค ํฐ ๊ฐ’์„ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ฐ€์–ด์„œ ํ‚ค๊ฐ€ ๋“ค์–ด๊ฐˆ ์ž๋ฆฌ๋ฅผ ํ™•๋ณดํ•œ๋‹ค.

 

6. j--;

์˜๋ฏธ: ์™ผ์ชฝ์œผ๋กœ ํ•œ ์นธ ์ด๋™ํ•˜๋ฉฐ ์ด์ „ ์š”์†Œ๋ฅผ ๊ณ„์† ๋น„๊ตํ•œ๋‹ค.

์ด์œ : ํ˜„์žฌ ์š”์†Œ๋ฅผ ์ฒ˜๋ฆฌํ•œ ํ›„, ๊ทธ๋ณด๋‹ค ํ•œ ๋‹จ๊ณ„ ๋” ์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•ด ๋‹ค์Œ ๋น„๊ต๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.

 

7. array[j + 1] = key;

์˜๋ฏธ: ํ‚ค๋ฅผ ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž…ํ•œ๋‹ค.

j + 1: ๋งˆ์ง€๋ง‰์œผ๋กœ ๋น„๊ตํ•œ ์š”์†Œ์˜ ๋‹ค์Œ ์นธ์ด ํ‚ค์˜ ์ตœ์ข… ์œ„์น˜์ด๋‹ค.

์ด์œ : ํ‚ค๋ณด๋‹ค ์ž‘์€ ์š”์†Œ๋“ค์€ ์ด๋ฏธ ๋น„๊ต ๋ฐ ์ด๋™์ด ์™„๋ฃŒ๋˜์—ˆ์œผ๋ฏ€๋กœ, ํ•ด๋‹น ์œ„์น˜์— ํ‚ค๋ฅผ ์‚ฝ์ž…ํ•˜๋ฉด ์ •๋ ฌ๋œ ์ƒํƒœ๊ฐ€ ์œ ์ง€๋œ๋‹ค.


 

while ๋ฌธ์ด๋ž€?
• while ๋ฌธ์€ “์กฐ๊ฑด์ด ์ฐธ(true)์ผ ๋•Œ ๊ณ„์† ๋ฐ˜๋ณต”ํ•˜๋Š” ๋ฌธ๋ฒ•์ด๋‹ค.
• ์ฆ‰, “ํŠน์ • ์กฐ๊ฑด์ด ๋งž์œผ๋ฉด ์ผ์„ ๋ฐ˜๋ณตํ•˜๊ณ , ์กฐ๊ฑด์ด ํ‹€๋ฆฌ๋ฉด ๋ฉˆ์ถ”๋Š” ๊ฒƒ”์ด๋‹ค.
int number = 3;

while (number > 0) { 
    System.out.println(number); 
    number--; 
}โ€‹
• ๋™์ž‘ ๊ณผ์ •
   1. ์ฒ˜์Œ์—” number = 3, ์กฐ๊ฑด number > 0์€ ์ฐธ์ด๋‹ˆ๊นŒ ์ถœ๋ ฅํ•˜๊ณ  number--;๋กœ ์ˆซ์ž๋ฅผ 1 ์ค„์ธ๋‹ค.
   2. ๋‹ค์‹œ ์กฐ๊ฑด์„ ํ™•์ธ. number = 2 → ์กฐ๊ฑด ์ฐธ → ๋ฐ˜๋ณต.
   3. ๊ณ„์† ๋ฐ˜๋ณตํ•˜๋‹ค๊ฐ€ number = 0์ด ๋˜๋ฉด ์กฐ๊ฑด number > 0์€ ๊ฑฐ์ง“์ด๋‹ˆ๊นŒ ๋ฉˆ์ถ˜๋‹ค.

 

์‚ฝ์ž…์ •๋ ฌ์˜ while ๋ฌธ

 

์ด์ œ ์‚ฝ์ž…์ •๋ ฌ์— ์žˆ๋Š” while ๋ฌธ์„ ์ดํ•ดํ•˜์ž.

while (j >= 0 && array[j] > key) {
    array[j + 1] = array[j]; // ์ˆซ์ž๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ฐ€์–ด๋ƒ„
    j--;                     // ์™ผ์ชฝ ์ˆซ์ž๋กœ ์ด๋™
}

์™ผ์ชฝ ์ˆซ์ž๊ฐ€ ์žˆ๊ณ (j >= 0), ํ‚ค๋ณด๋‹ค ํฌ๋‹ค๋ฉด(array[j] > key)”

์™ผ์ชฝ์— ์žˆ๋Š” ๋” ํฐ ์ˆซ์ž๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ฐ€๊ณ  j--;๋กœ ์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•œ๋‹ค.

 

์™œ j--;๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?

j--;๋Š” ๋น„๊ตํ•  ์ˆซ์ž๋ฅผ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค.

  • j๋Š”  ๋น„๊ต ์ค‘์ธ ์ˆซ์ž์˜ ์œ„์น˜(์ธ๋ฑ์Šค)๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

  • j--;๋Š” “๋‹ค์Œ์œผ๋กœ ์™ผ์ชฝ ์ˆซ์ž๋ฅผ ๋น„๊ตํ•˜๊ฒ ๋‹ค”๋Š” ๋œป์ด๋‹ค.

 

 

 

 


1๋‹จ๊ณ„ : i = 1, key = 2

์ด ๊ณผ์ •์„ ๊ทธ๋ฆผ์œผ๋กœ ์„ค๋ช…

1. ์ดˆ๊ธฐ ๋ฐฐ์—ด

   • ๋ฐฐ์—ด: [5, 2, 4, 6, 1, 3]

   • i = 1 (๋‘ ๋ฒˆ์งธ ์š”์†Œ๋ถ€ํ„ฐ ์‹œ์ž‘)

   • key = 2 (ํ˜„์žฌ ์ •๋ ฌํ•˜๋ ค๋Š” ์ˆซ์ž)

   • j = 0 (๋น„๊ต ๋Œ€์ƒ: key์˜ ๋ฐ”๋กœ ์™ผ์ชฝ)


๋ฐฐ์—ด: [5, 2, 4, 6, 1, 3]
         ^
        j=0 (๋น„๊ต ์‹œ์ž‘)โ€‹

  i = 1์ด๋ฏ€๋กœ key = 2.

  j = 0, array[j] = 5์™€ key๋ฅผ ๋น„๊ตํ•œ๋‹ค.


2. 5 > 2 → ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ฐ€๊ธฐ:
๋ฐฐ์—ด: [5, 5, 4, 6, 1, 3]
         ^
        j=0โ€‹

5>2๋•Œ๋ฌธ์— 5๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™.

 


3. j--;๋กœ ์ด๋™ (์™ผ์ชฝ์œผ๋กœ ํ•œ ์นธ):
๋ฐฐ์—ด: [5, 5, 4, 6, 1, 3]
      ^
     j=-1 (๋” ๋น„๊ตํ•  ์ˆซ์ž ์—†์Œ)โ€‹

j--๋กœ j = -1์ด ๋œ๋‹ค.



4. ํ‚ค ์‚ฝ์ž…:
๋ฐฐ์—ด: [2, 5, 4, 6, 1, 3]โ€‹

j = -1์ด๋ฏ€๋กœ ๋” ์ด์ƒ ๋น„๊ตํ•  ์ˆซ์ž๊ฐ€ ์—†๋‹ค.
 key = 2๋ฅผ j + 1 = 0 ์œ„์น˜์— ์‚ฝ์ž…ํ•œ๋‹ค.

 

2๋‹จ๊ณ„: i = 2, key = 4

1. ๋น„๊ต ์‹œ์ž‘
• ๋ฐฐ์—ด: [2, 5, 4, 6, 1, 3]
• ์„ค๋ช…:
   i = 2์ด๋ฏ€๋กœ key = 4.
   j = 1, array[j] = 5์™€ key๋ฅผ ๋น„๊ตํ•œ๋‹ค.

2 . 5 > 4 → ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ฐ€๊ธฐ
• ๋ฐฐ์—ด: [2, 5, 5, 6, 1, 3]
• ์„ค๋ช…:
  array[j] = 5๊ฐ€ key = 4๋ณด๋‹ค ํฌ๊ธฐ ๋•Œ๋ฌธ์— 5๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™.
   j--๋กœ j = 0์ด ๋œ๋‹ค.

3. 2 < 4 → ๋น„๊ต ๋ฉˆ์ถค
• ๋ฐฐ์—ด: [2, 4, 5, 6, 1, 3]
• ์„ค๋ช…:
  array[j] = 2๋Š” key = 4๋ณด๋‹ค ์ž‘์œผ๋ฏ€๋กœ ๋น„๊ต๋ฅผ ๋ฉˆ์ถ˜๋‹ค.
  key = 4๋ฅผ j + 1 = 1 ์œ„์น˜์— ์‚ฝ์ž…ํ•œ๋‹ค.

 

 

3๋‹จ๊ณ„: i = 3, key = 6

1. ๋น„๊ต ์‹œ์ž‘
• ๋ฐฐ์—ด: [2, 4, 5, 6, 1, 3]
• ์„ค๋ช…:
   i = 3์ด๋ฏ€๋กœ key = 6.
   j = 2, array[j] = 5์™€ key๋ฅผ ๋น„๊ตํ•œ๋‹ค.

2. 5 < 6 → ๋น„๊ต ๋ฉˆ์ถค
• ๋ฐฐ์—ด: [2, 4, 5, 6, 1, 3]
• ์„ค๋ช…:
• array[j] = 5๋Š” key = 6๋ณด๋‹ค ์ž‘์œผ๋ฏ€๋กœ ๋น„๊ต๋ฅผ ๋ฉˆ์ถ˜๋‹ค.
• key = 6์€ ์ด๋ฏธ ์˜ฌ๋ฐ”๋ฅธ ์ž๋ฆฌ์— ์žˆ๋‹ค.

 

 

4๋‹จ๊ณ„: i = 4, key = 1

1. ๋น„๊ต ์‹œ์ž‘
• ๋ฐฐ์—ด: [2, 4, 5, 6, 1, 3]
• ์„ค๋ช…:
   i = 4์ด๋ฏ€๋กœ key = 1.
   j = 3, array[j] = 6์™€ key๋ฅผ ๋น„๊ตํ•œ๋‹ค.

2. ์ˆซ์ž ์ด๋™ ๊ณผ์ •
• 6 > 1 → [2, 4, 5, 6, 6, 3] → j = 2
• 5 > 1 → [2, 4, 5, 5, 6, 3] → j = 1
• 4 > 1 → [2, 4, 4, 5, 6, 3] → j = 0
• 2 > 1 → [2, 2, 4, 5, 6, 3] → j = -1

3. Key๋ฅผ ์‚ฝ์ž…
• ๋ฐฐ์—ด: [1, 2, 4, 5, 6, 3]
• ์„ค๋ช…:
   j = -1์ด๋ฏ€๋กœ ๋” ์ด์ƒ ๋น„๊ตํ•  ์ˆซ์ž๊ฐ€ ์—†๋‹ค.
   key = 1์„ j + 1 = 0 ์œ„์น˜์— ์‚ฝ์ž…ํ•œ๋‹ค.

 

 

5๋‹จ๊ณ„: i = 5, key = 3

1. ๋น„๊ต ์‹œ์ž‘
• ๋ฐฐ์—ด: [1, 2, 4, 5, 6, 3]
• ์„ค๋ช…:
  i = 5์ด๋ฏ€๋กœ key = 3.
  j = 4, array[j] = 6์™€ key๋ฅผ ๋น„๊ตํ•œ๋‹ค.

2. ์ˆซ์ž ์ด๋™ ๊ณผ์ •
• 6 > 3 → [1, 2, 4, 5, 6, 6] → j = 3
• 5 > 3 → [1, 2, 4, 5, 5, 6] → j = 2
• 4 > 3 → [1, 2, 4, 4, 5, 6] → j = 1

3. Key๋ฅผ ์‚ฝ์ž…
• ๋ฐฐ์—ด: [1, 2, 3, 4, 5, 6]
• ์„ค๋ช…:
• array[j] = 2๋Š” key = 3๋ณด๋‹ค ์ž‘์œผ๋ฏ€๋กœ ๋น„๊ต๋ฅผ ๋ฉˆ์ถ˜๋‹ค.
• key = 3์„ j + 1 = 2 ์œ„์น˜์— ์‚ฝ์ž…ํ•œ๋‹ค.

 

 

์ตœ์ข… ๊ฒฐ๊ณผ

• ๋ฐฐ์—ด์ด ์ •๋ ฌ๋œ ์ƒํƒœ: [1, 2, 3, 4, 5, 6]

+ Recent posts