>  기사  >  웹 프론트엔드  >  JS Hill 알고리즘 정렬에 대한 자세한 설명

JS Hill 알고리즘 정렬에 대한 자세한 설명

小云云
小云云원래의
2018-03-07 10:45:521242검색

Hill 알고리즘도 원칙적으로 삽입 정렬의 일종입니다. Hill 알고리즘을 이해하기 전에 먼저 삽입 정렬을 이해해야 합니다. JS 삽입 정렬 자세한 설명을 참조하세요.

원리:
힐 정렬은 삽입 정렬을 기반으로 데이터를 그룹화하고 원본 데이터를 여러 하위 집합으로 나눈 다음 각 하위 집합을 정렬하는 등 최종적으로 완전히 정렬될 때까지 계속해서 하위 집합으로 나눕니다.

시퀀스: [3,5,2,4,7,6,8,9,1]
먼저 전체 시퀀스를 간격을 기준으로 하위 집합으로 나누고 하위 집합을 정렬합니다(갭은 일반적으로 Math.floor(arr. 길이/2))
gap:4
분할된 부분 집합은 다음과 같습니다: 3,7,1 5,6 2,8 4,9가 부분 집합
부분 집합 정렬 후: 1,3, 7 5,6 2,8 4 ,9
숫자는 [1,5,2,4,3,6,8,9,7]

간격 값을 수정하고 다시 정렬합니다.
간격: 2
… gap은 0

JS 코드 구현:

var arr=[3,5,2,4,7,6,8,9,1];var gap=Math.floor(arr.length/2);       
while(gap>0){    for(var i=gap;i<arr.length;i++){        var temp=arr[i];        var j=i-gap;        while(j>=0&&arr[j]>temp){
            arr[j+gap]=arr[j];
            arr[j]=temp;
            j-=gap;
        }
        arr[j+gap]=temp;
        }
    gap=Math.floor(gap/2); 
}

输出结果: [1, 2, 3, 4, 5, 6, 7, 8, 9]

관련 권장 사항:


JS 삽입 정렬에 대한 자세한 설명

JavaScript에서 일반적으로 사용되는 기본 정렬 알고리즘에 대한 분석 예

javascript 배열 중복 제거 빠른 설명에 대한 자세한 설명 정렬 알고리즘 예제

위 내용은 JS Hill 알고리즘 정렬에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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