본문 바로가기
Python

Python 삽입 정렬

by 코딩하는 욤욤이 2024. 1. 28.
반응형

이번 포스팅에서는 Python 삽입 정렬 알고리즘에 대해 알아봅니다.

성능 측면에서 삽입 정렬은 최고의 정렬 알고리즘이 아닙니다. 그러나 선택 정렬과 버블 정렬보다 조금 더 효율적입니다.

삽입 정렬 알고리즘을 쉽게 이해하기 위해 예제부터 시작하겠습니다.

Python 삽입 정렬



배열 [14,5,18,6,21]이 있다고 가정해 보겠습니다.

이 배열에 두 부분이 있다고 가정합니다. 첫 번째 부분은 정렬되고 다른 부분은 정렬되지 않습니다.

Python 삽입 정렬


배열의 정렬된 부분은 주황색 선의 왼쪽에 있고 정렬되지 않은 부분은 오른쪽에 있습니다.

이제 우리가 해야 할 일은 정렬되지 않은 부분에서 각 요소를 하나씩 선택하여 정렬된 배열의 적절한 위치에 추가하는 것입니다.

Python 삽입 정렬


14는 정렬된 부분의 유일한 요소이므로 이미 정렬되어 있습니다.

이제 정렬되지 않은 부분에서 첫 번째 요소를 선택하여 정렬된 부분에 추가합니다.

Python 삽입 정렬


5는 14보다 작으므로 14는 한 자리 오른쪽으로 이동해야 합니다.

다시 정렬되지 않은 부분에서 첫 번째 요소를 선택하여 정렬된 부분에 추가합니다.

Python 삽입 정렬


18은 14보다 크므로 이동할 필요가 없습니다.

같은 것을 반복

Python 삽입 정렬


6은 5보다 크고 14보다 작습니다.

따라서 14와 18을 한 자리씩 오른쪽으로 이동해야 합니다.

마침내

Python 삽입 정렬


21이 18보다 크면 이동할 필요가 없습니다. 완료.

연산
n개의 요소를 포함하는 'Arr[]' 배열이 있습니다.

1단계:   i = 1로 설정

2단계:  설정값 = Arr[i]

위치 설정 = i

3단계:   위치 > 0이고 Arr[위치-1]>값인 경우

Arr[위치] = Arr[위치-1]

위치 = 위치 -1

[조건이 거짓이 될 때까지 이 단계를 반복]

4단계:  Arr[위치] = 값

5단계:  (n-1)번 동안 2단계로 이동합니다.

Python의 삽입 정렬 프로그램

Arr = [5,14,18,6,21]
n= len(Arr)
i = 1
while (i<=n-1):
  value = Arr[i]
  position = i
 
  while (position>0 and Arr[position-1]>value):
    Arr[position] = Arr[position-1]
    position = position -1
 
  i = i+1
  Arr[position] = value
 
 
for i in Arr:
  print i,


산출

5 6 14 18 21

반응형

'Python' 카테고리의 다른 글

파이썬 버블 정렬  (1) 2024.01.28
Python 선택 정렬  (1) 2024.01.28
Python 빠른 정렬  (1) 2024.01.28
Python 병합 정렬  (1) 2024.01.28
Python에서 문자열을 뒤집는 5가지 방법  (1) 2024.01.28