힐 정렬의 기본 아이디어:
힐 정렬은 삽입 정렬을 기반으로 한 개선입니다. 삽입 정렬은 배열된 배열에서 작동할 때 효율적이므로 삽입 정렬은 일반적으로 비효율적입니다. 한번에 이동할 수 있습니다. 따라서 Hill 정렬은 그룹화 증분이 1이 될 때까지 먼저 그룹화하여 정렬합니다.
예:
arr = [49,38,04,97,76,13,27,49,55,65], 그룹화 증분이 5인 경우 빨간색 숫자는 1입니다. group , 삽입 정렬을 수행하고
을 차례로 반복하여 arr = [13,38,04,97,76,49,27,49,55,65] 순회가 완료된 후 그룹화 증분. 감소,
arr = [13,27,04,55,65,49,38,49,97,76], 그런 다음 그룹화 증분 2로 그룹에 대해 삽입 정렬을 계속 수행합니다. 그룹화 증분은 1
코드:
Python 코드
def shell_sort(lists):
#Hill 정렬
count = len (목록)
단계 = 2
그룹 = 개수 / 단계
while group > 0: #그룹 증분 그룹화를 통한 루프
for i in range(0, group):
j = i + group
while j < count: # 증가분만큼 증가하는 그룹의 키 값 인덱스
k = j - 그룹
key = listed[j]
while k >= 0: #그룹 내 삽입 정렬
if listed[k] >
목록[k + 그룹], ~ ~ 이후 🎜>
그룹 /= 단계 반품 목록