Search

์‚ฝ์ž…์ •๋ ฌ

์‚ฝ์ž… ์ •๋ ฌ (Insertion Sort)

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

ํ•ต์‹ฌ ์š”์†Œ

โ€ข
์ •๋ ฌ๋œ ๋ถ€๋ถ„๊ณผ ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ง„ํ–‰
โ€ข
๊ฐ ์›์†Œ๋ฅผ ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž…
โ€ข
in-place ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์ถ”๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ฑฐ์˜ ํ•„์š”ํ•˜์ง€ ์•Š์Œ

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

์ตœ์„ ์˜ ๊ฒฝ์šฐ
O(n)
ํ‰๊ท ์˜ ๊ฒฝ์šฐ
O(nยฒ)
์ตœ์•…์˜ ๊ฒฝ์šฐ
O(nยฒ)

์ฃผ์š” ํŠน์ง•

โ€ข
์•ˆ์ • ์ •๋ ฌ(Stable Sort)
โ€ข
์ž‘์€ ๋ฐ์ดํ„ฐ์…‹์—์„œ ํšจ์œจ์ 
โ€ข
์ด๋ฏธ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๋งค์šฐ ํšจ์œจ์ 
โ€ข
์ ์€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ

์˜ˆ์‹œ ์ฝ”๋“œ

์ง์ ‘ ๊ตฌํ˜„

public class InsertionSort { public static void insertionSort(int[] arr) { int n = arr.length; for (int i = 1; i < n; i++) { int key = arr[i]; // ํ˜„์žฌ ์‚ฝ์ž…ํ•  ๊ฐ’ int j = i - 1; // key๋ณด๋‹ค ํฐ ๊ฐ’์„ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j]; j--; } arr[j + 1] = key; // ์ ์ ˆํ•œ ์œ„์น˜์— key ์‚ฝ์ž… } } public static void main(String[] args) { int[] arr = { 5, 2, 9, 1, 5, 6 }; insertionSort(arr); for (int num : arr) { System.out.print(num + " "); } } }
Java
๋ณต์‚ฌ