
์ฝ์ ์ ๋ ฌ์ ๊ฐ๋ ์ ๋งค์ฐ ๊ฐ๋จํ๋ค.
์ผ์ชฝ์ ์์์ ํฌ๊ธฐ๋ฅผ ๋น๊ตํ์ฌ, ๋ ํฐ ๊ฐ์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฎ๊ธฐ๋ค ๋ณด๋ฉด ์์ฐ์ค๋ฝ๊ฒ ์ผ์ชฝ๋ถํฐ ์์ ์๊ฐ ๋์ด๋๋ ๋ฐฉ์์ด๋ค.
ํ์ง๋ง ์ฝ์ ์ ๋ ฌ์ ๊ตฌํํ 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]
'๐ฐ๐ท ํ๊ตญ์ด (Korean) > Java Algorithm Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Java] ์ฌ๊ท ํจ์์ ์คํ(Stack)์ ๊ฐ๋ (0) | 2024.12.16 |
|---|---|
| [Java] ํฉํ ๋ฆฌ์ผ ๊ฐ๋ ๊ณผ ์ฝ๋๋ก ํ์ด๋ด๋ ๋๊ฐ์ง ๋ฐฉ๋ฒ (0) | 2024.12.16 |
| [Java] ๋ฐฐ์ด์ ์ ์ฌ๋ (HashSet๊ณผ HashMap์ ์ฐจ์ด) (1) | 2024.12.14 |
| [Java] ๋ฐฐ์ด ์๋ฅด๊ธฐ (๋ฐฐ์ด์ ํญ์ ์ธ๋ฑ์ค 0๋ถํฐ ์์๋๋ค.) (0) | 2024.12.08 |
| [Java] ์์ ๋ฐฐ์ด์ ๊ธธ์ด (0) | 2024.12.06 |