자료ꡬ쑰

Insertion Sort μ‚½μž…μ •λ ¬

mmin.h 2020. 8. 4. 10:31

μ•ˆλ…•ν•˜μ„Έμš”. 주인μž₯ Hμž…λ‹ˆλ‹€. 

μ˜€λŠ˜μ€ μ‚½μž… 정렬에 λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

μ˜€λ¦„μ°¨μˆœμœΌλ‘œ λ¬΄μ§ˆμ„œν•œ 1~10 을 μ •λ ¬ν•œλ‹€κ³  ν–ˆμ„λ•Œ, 

각 숫자λ₯Ό μ μ ˆν•œ μœ„μΉ˜μ— μ‚½μž…ν•˜λŠ” λ°©λ²•μœΌλ‘œ 문제λ₯Ό ν’‰λ‹ˆλ‹€. 

λ‹€λ₯Έ μ •λ ¬κ³Ό 비ꡐ해 λ³Έλ‹€λ©΄ μ‚½μž… 정렬은 ν•„μš”ν•  λ•Œλ§Œ μœ„μΉ˜λ₯Ό λ°”κΎΈκ²Œ λ©λ‹ˆλ‹€. 

 

μ‚½μž… 정렬은 기본적으둜 μ •렬이 λ˜μ–΄μžˆλ‹€κ³  κ°€μ • ν–ˆμ„ λ•Œ ꡉμž₯히 λΉ λ₯Έ 속도λ₯Ό μžλž‘ν•©λ‹ˆλ‹€. 

μ†ŒμŠ€ μ½”λ“œ 상 반볡문이 두 번 λ“€μ–΄κ°€ μžˆλ‹€λŠ” μ μ—μ„œ μ‹œκ°„ λ³΅μž‘λ„λŠ” O(N^2)μž…λ‹ˆλ‹€.

 

#include <stdio.h>

int main(void)
{
	int arr[10] = { 1,3,2,5,7,6,10,9,8,4 };
	int i, j, tmp;
	for (i = 0; i < 9; i++)
	{
		j = i;
		while (j >= 0 && arr[j] > arr[j + 1]) {
			tmp = arr[j]; 
			arr[j] = arr[j + 1];
			arr[j + 1] = tmp;
			j--;
		}
	}
	for (i = 0; i < 10; i++) {
		printf("%2d", arr[i]);
	}
	return 0;
}