본문 바로가기

IT Study/Algorithm

삽입정렬(Insertion Sort)

1: for j = 1 to A.length

2:     key = A[j]

3:     //A[j]를 정렬된 배열 A[1...j-1]에 삽입한다.

4:     i=j-1

5:     while i>=0 그리고 A[j] > key

6:         A[i + 1] A[i]

7:         i= i-1

8:     A[i + 1] = key

 

(배열은 인덱스 0부터 시작하기 때문에 책에 나온 것을 약간 수정함)

A[j](=key)값을 기준으로

왼쪽(A[1...j-1]) 값은 정렬된 배열

오른쪽(A[j+1...n])값은 정렬되지 않는 배열이다.

 

1: 키값을 루프돌릴 반복문

 

2: j번째에 해당하는 키값 설정

 

4: j를기준으로 왼쪽의 정렬된 배열에 key값을 삽입하기 위해

j바로 옆인 j-1의 값을 i에 저장

 

5: i가 j-1부터 0까지 루프돌리기 위한 while

추가적으로 j-1 ~ 0 번째까지 중 key값보다 작으면

 

6: 해당 인덱스에 위치한 배열의 값을

키값의 위치(j-1이나 i+1은 key값이 위치한 같은 인덱스값)에 저장

 

7:j를 왼쪽으로 한칸 이동하기 위한 연산

 

8: while의 연산이 이루어지면 key값이 위에 연산된 인덱스 위치로 저장됨

while의 연산이 이루어지지않았으면 key값은 그대로 key위치에 저장됨

 

아래는 java로 코드화한 것.

 

'IT Study > Algorithm' 카테고리의 다른 글

진수 변환 코드  (0) 2018.05.17
피보나치 수열  (0) 2018.05.15
버블정렬(Bubble Sort)  (0) 2018.05.15
병합 정렬(Merge Sort)  (0) 2018.05.14
[백준 알고리즘]2839번 문제. 설탕배달  (0) 2018.05.12