>  기사  >  백엔드 개발  >  Python을 사용하여 8가지 주요 정렬 알고리즘 구현 - Hill 정렬

Python을 사용하여 8가지 주요 정렬 알고리즘 구현 - Hill 정렬

巴扎黑
巴扎黑원래의
2016-12-03 11:25:401343검색

힐 정렬의 기본 아이디어:

힐 정렬은 삽입 정렬을 기반으로 한 개선입니다. 삽입 정렬은 배열된 배열에서 작동할 때 효율적이므로 삽입 정렬은 일반적으로 비효율적입니다. 한번에 이동할 수 있습니다. 따라서 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):  
    #希尔排序  
    count = len(lists)  
    step = 2  
    group = count / step  
    while group > 0:  #通过group增量分组循环  
        for i in range(0, group):  
            j = i + group  
            while j < count:  #分组中key值的索引,通过增量自增  
                k = j - group  
                key = lists[j]  
                while k >= 0:  #分组中进行插入排序  
                    if lists[k] > key:  
                        lists[k + group], lists[k] = lists[k], key  
                    else: break  
                    k -= group  
                j += group  
        group /= step  
    return lists


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.