프로그래밍/알고리즘

삽입 정렬( Insert Sorting )

GONII 2015. 2. 23. 20:34

오름 차순 기준으로 수행

  • 첫 번째 데이터와 두 번째 데이터를 비교

    첫번째가 더 작기 때문에 바꿀 필요가 없다

3

5

6

4

1

  

  • 두번째와 세번 째 비교

    바꿀 필요 없음

3

5

6

4

1

  

  • 세 번째와 네 번째 데이터 비교

    바꿀게 생겼음

3

5

6

4

1

  

  • 숫자4를 임시 기억장소에 기억해 두고 앞에 있던 수를 4가 있던 자리에 복사

3

5

6

6

1

4

  • 그 앞에 있는 5와 4를 비교

    역시 바꿔야 하기 때문에 5를 뒤쪽으로 복사

3

5

5

6

1

4

  • 마찬가지고 3과 비교해보면 바꿀 필요 없으므로 5가 있던 자리로 4를 복사

3

4

5

6

1

4

  • 이제 6과 1을 비교

    바꿔야 됨, 임시 기억장소에 1을 복사하고 1이 있던 자리로 6을 복사

3

4

5

6

6

1

  • 마찬가지로 5도 1보다 크므로 뒤쪽에 복사

3

4

5

5

6

1

  • 4도 1과 비교해보고 크니까 뒤로 복사

3

4

4

5

6

1

  • 3도 크니까 뒤로 복사

3

3

5

5

6

1

  • 더이상 비교할 숫자가 없기때문에 첫번째 넣어줌

1

4

5

5

6

1

  • 삽입 정렬 끝

    총 11번의 비교를 통해 삽입정렬이 완료되었음

정리

임시기억장소를 만들어 두어 교체할 숫자가 있을 경우 그곳에 데이터를 복사한 뒤 한칸씩 뒤로 밀며 그 앞에 데이터와 비교

지금 까지 비교했던 숫자 중 맨 마지막 숫자와 다음 비교할 숫자를 비교하여 교체 할 필요가 있으면 그 앞에 숫자들도 차례대로 검사하는 방식, 더 이상 비교할 필요가 없으면 다음 단계를 진행하면 똑같은 과정을 거친다

   

숫자가 5,4,3,2,1 처럼 완전 거꾸로 된 데이터를 사용한다면 모든 숫자를 다 비교하고 바꿔줘야 한다

   

반응형