java 알고리즘의 힐 정렬 상세 및 실현 코드
생각
힐 정렬: 수조의 임의의 간격이 h인 원소를 질서정연하게 합니다.정렬을 진행할 때 만약에 h가 크다면 우리는 원소를 먼 곳으로 이동하여 더욱 작은 h질서를 실현하기 위해 편의를 만들 수 있다.이런 방식으로 임의로 1로 끝나는 h 서열에 대해 우리는 데이터를 정렬할 수 있다.
개념
h질서수조: 임의의 간격이 h인 원소는 모두 질서수조이다.
3. 효율적인 이유
대규모 난서수조에 대한 삽입 정렬은 매우 느리다. 왜냐하면 인접한 원소만 교환하기 때문에 원소는 수조의 한쪽에서 다른 단락으로 조금씩 이동할 수 밖에 없다.
힐 정렬이 더 효율적인 이유: 그것은 하위 그룹의 규모와 질서성을 평가하고 정렬 초기에 각 하위 그룹이 매우 짧았다.정렬 후 하위 그룹은 모두 부분적으로 질서정연한 것이기 때문에 이 두 가지 상황은 정렬을 삽입하기에 매우 적합하다.
4. 코드
/** 
 *   
 *  
 * @author pengcx 
 *  
 */  
public class Shell extends Sort {  
  public static void main(String[] args) {  
    String[] a = { "d", "a", "w", "b", "q" };  
    Shell.sort(a);  
    show(a);  
  }  
  
  /** 
  *  a 
  *  
  * @param a 
  *       a 
  */  
  protected static void sort(Comparable[] a) {  
    int N = a.length;  
    int h = 1;  
    while (h < N / 3) {  
      h = 3 * h + 1;  
    }  
  
    while (h >= 1) {  
      for (int i = 0; i < N; i++) {  
        for (int j = i; j >= h && less(a[j], a[j - h]); j -= h) {  
          exch(a, j, j - h);  
        }  
      }  
      h = h / 3;  
    }  
  }  
}  
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!
                이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.