Hill 정렬 알고리즘의 기본 아이디어는 먼저 n보다 작은 정수 d1을 첫 번째 증분으로 취하고 파일의 모든 레코드를 d1 그룹으로 나누는 것입니다. 거리가 dl의 배수인 모든 레코드는 동일한 그룹에 배치됩니다. 먼저 각 그룹 내에서 직접 삽입 정렬을 수행한 다음 두 번째 증분 d2<d1을 취하고 dt=1(dt<dt-l<…<d2<d1) 증분까지, 즉 모두가 될 때까지 위의 그룹화 및 정렬을 반복합니다. 직접 삽입 정렬을 위해 레코드는 동일한 그룹에 배치됩니다. 이 방법은 본질적으로 그룹화된 삽입 방법입니다.
//증분식 삽입 정렬 public static void shellSort(int[] array) { int len = array.length; int h = 1; while (h < len) h = h * 3 + 1; 1) { for (int i = 1; i < len; i++) { for (int j = i; j >= h; j = j - h) { if (array[j] < array[j - h]) { Sort.swap(array, j, j - h);//j와 jh를 교환합니다. } else break;
Hill 정렬의 개략도
이상이 이 글의 전체 내용입니다. Java Hill 정렬을 마스터하는 모든 분들에게 도움이 되기를 바랍니다.