이번 포스팅에서는 Python 삽입 정렬 알고리즘에 대해 알아봅니다.
성능 측면에서 삽입 정렬은 최고의 정렬 알고리즘이 아닙니다. 그러나 선택 정렬과 버블 정렬보다 조금 더 효율적입니다.
삽입 정렬 알고리즘을 쉽게 이해하기 위해 예제부터 시작하겠습니다.
Python 삽입 정렬
예
배열 [14,5,18,6,21]이 있다고 가정해 보겠습니다.
이 배열에 두 부분이 있다고 가정합니다. 첫 번째 부분은 정렬되고 다른 부분은 정렬되지 않습니다.
배열의 정렬된 부분은 주황색 선의 왼쪽에 있고 정렬되지 않은 부분은 오른쪽에 있습니다.
이제 우리가 해야 할 일은 정렬되지 않은 부분에서 각 요소를 하나씩 선택하여 정렬된 배열의 적절한 위치에 추가하는 것입니다.
14는 정렬된 부분의 유일한 요소이므로 이미 정렬되어 있습니다.
이제 정렬되지 않은 부분에서 첫 번째 요소를 선택하여 정렬된 부분에 추가합니다.
5는 14보다 작으므로 14는 한 자리 오른쪽으로 이동해야 합니다.
다시 정렬되지 않은 부분에서 첫 번째 요소를 선택하여 정렬된 부분에 추가합니다.
18은 14보다 크므로 이동할 필요가 없습니다.
같은 것을 반복
6은 5보다 크고 14보다 작습니다.
따라서 14와 18을 한 자리씩 오른쪽으로 이동해야 합니다.
마침내
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의 삽입 정렬 프로그램
산출
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 |