insertionSort
insertion Sort
์ฝ์
์ ๋ ฌ
: ์๋ฃ ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ์์์๋ถํฐ ์ฐจ๋ก๋๋ฃ ์ด๋ฏธ ์ ๋ ฌ๋ ๋ฐฐ์ด ๋ถ๋ถ๊ณผ ๋น๊ตํ์ฌ, ์์ ์ ์์น๋ฅผ ์ฐพ์ ์ฝ์
๋ค๋ฅธ ์ ๋ ฌ ๋ฐฉ์์ ๋ฌด์กฐ๊ฑด ์์น๋ฅผ ๋ฐ๊พธ๋ ๋ฐฉ์์ด์๋ค๋ฉด ์ฝ์ ์ ๋ ฌ์ ํ์ํ ๋๋ง ์์น๋ฅผ ๋ฐ๊พธ๊ฒ ๋๋ค
์ฝ์ ์ ๋ ฌ์ ๋น๊ต์ ๋๋ฆฐ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ํ๋ฉฐ, ๋ณต์กํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค
๋ง์ฝ, ์ ๋ ฌ์ด ๋์๋ค๊ณ ๊ฐ์ฅํ๋ฉด ํน์ ํ ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋น ๋ฅธ ์๋๋ฅผ ๊ฐ์ง๊ฒ ๋๋ฉฐ,
์ฝ์ ์ ๋ ฌ์ ์๊ฐ ๋ณต์ก๋๋ O(N^2)์ด๋ค
์ ๋ ฌ ๋ฐฉ๋ฒ
๋ค์๊ณผ ๊ฐ์ด ์์์ ๋ถํฐ ์ฐจ๋ก๋๋ก ์ ๋ ฌ๋ ๋ถ๋ถ๊ณผ ๋น๊ตํ์ฌ, ์ ์ ํ ์์น๋ฅผ ์ฐพ์๊ฐ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
ํน์ง์ผ๋ก๋ ๊ณ์ ๋น๊ตํ๋ฏ๋ก ๋ฆฌ์คํฌ ํฌ๊ธฐ๊ฐ ํฌ๋ฉด ๋ถ๋ฆฌํ๋ฉฐ, ์ ๋ ฌ์ด ๋น๊ต์ ์์ฑ๋ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ์๋ ๋ ์ ๋ฆฌํ๋ค
public class InsertionSort {
public static void main(String[] args) {
int i, j, temp;
int[] arr = { 1, 10, 5, 8, 7, 6, 4, 3, 2, 9 };
for (i = 0; i < arr.length-1 ; i++) {
j = i;
while (j >= 0 && arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
j--;
}
}
for ( i = 0; i < arr.length ; i++) {
System.out.printf("%d ", arr[i]);
}
}
}
array = [1, 10, 5, 8, 7, 6, 4, 3, 2, 9]
for i in range(1, len(array)):
for j in range(i, 0, -1): # ์ธ๋ฑ์ค i๋ถํฐ 1๊น์ง 1์ฉ ๊ฐ์ํ๋ฉฐ ๋ฐ๋ณตํ๋ ๋ฌธ๋ฒ
if array[j] < array[j - 1]: # ํ ์นธ์ฉ ์ผ์ชฝ์ผ๋ก ์ด๋
array[j], array[j - 1] = array[j - 1], array[j]
else: # ์๊ธฐ๋ณด๋ค ์์ ๋ฐ์ดํฐ๋ฅผ ๋ง๋๋ฉด ๊ทธ ์์น์์ ๋ฉ์ถค
break
print(array)
Last updated
Was this helpful?