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

巴扎黑
풀어 주다: 2016-12-03 11:25:40
원래의
1288명이 탐색했습니다.

힐 정렬의 기본 아이디어:

힐 정렬은 삽입 정렬을 기반으로 한 개선입니다. 삽입 정렬은 배열된 배열에서 작동할 때 효율적이므로 삽입 정렬은 일반적으로 비효율적입니다. 한번에 이동할 수 있습니다. 따라서 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
로그인 후 복사


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!