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
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]관련 권장 사항:
JavaScript에서 일반적으로 사용되는 기본 정렬 알고리즘에 대한 분석 예
javascript 배열 중복 제거 빠른 설명에 대한 자세한 설명 정렬 알고리즘 예제
위 내용은 JS Hill 알고리즘 정렬에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!