자바 정렬 의 힐 정렬 인 스 턴 스 삽입

자바 정렬 의 힐 정렬 인 스 턴 스 삽입
자바 코드 

/*    (Shell Sort)        。      :       n   d1       ,          d1 
   *   ,     d1             ,           ;  ,      d2<d1,          , 
   *        dt=1(dt<dt-1<...<d2<d1),                     。 
   * new int[]{8,5,1,7,9,4,6},            3   ,[[6][3][0]     ,[4] [1]     ,[5] [2]     , 
   *           1,  [1] [0]     ,[2][1][0]....,          。*/ 
  public static void shellSort(int[] intArray) { 
     System.out.print("        :    "); 
     for(int k=0;k<intArray.length;k++) 
        System.out.print(" "+intArray[k]+" "); 
      System.out.println(); 
     
    int arrayLength=intArray.length; 
    int j,k;//     
    int temp;//     
    boolean isChange;//       
    int dataLength;//          
    int pointer;//        
    dataLength=arrayLength/2;//         
    while(dataLength!=0){//         
      //          
      for(j=dataLength;j<arrayLength;j++){ 
        isChange=false; 
        temp=intArray[j];//  ,       
        pointer=j-dataLength;//          
        //               
        while(temp<intArray[pointer]&&pointer>=0&&pointer<arrayLength){ 
          intArray[pointer+dataLength]=intArray[pointer]; 
          //              
          pointer=pointer-dataLength; 
          isChange=true; 
          System.out.print("every changing result: "); 
          for(k=0;k<arrayLength;k++) 
            System.out.print(" "+intArray[k]+" "); 
          System.out.println(); 
          if(pointer<0||pointer>arrayLength) 
            break; 
        } 
        //         
        intArray[pointer+dataLength]=temp; 
        if(isChange){ 
          System.out.print("Current sorting result: "); 
          for(k=0;k<arrayLength;k++) 
            System.out.print(" "+intArray[k]+" "); 
          System.out.println(); 
        } 
      } 
      System.out.print("            "+dataLength+",          ,Current sorting result: "); 
      for(k=0;k<arrayLength;k++) 
        System.out.print(" "+intArray[k]+" "); 
      System.out.println(); 
      dataLength=dataLength/2;//            
    } 
  } 
 실행 후 결 과 는:
자바 코드 

        :     8 5 1 7 9 4 6  
every changing result: 8 5 1 8 9 4 6  
Current sorting result: 7 5 1 8 9 4 6  
every changing result: 7 5 1 8 9 4 8  
every changing result: 7 5 1 7 9 4 8  
Current sorting result: 6 5 1 7 9 4 8  
            3,          ,Current sorting result: 6 5 1 7 9 4 8  
every changing result: 6 6 1 7 9 4 8  
Current sorting result: 5 6 1 7 9 4 8  
every changing result: 5 6 6 7 9 4 8  
every changing result: 5 5 6 7 9 4 8  
Current sorting result: 1 5 6 7 9 4 8  
every changing result: 1 5 6 7 9 9 8  
every changing result: 1 5 6 7 7 9 8  
every changing result: 1 5 6 6 7 9 8  
every changing result: 1 5 5 6 7 9 8  
Current sorting result: 1 4 5 6 7 9 8  
every changing result: 1 4 5 6 7 9 9  
Current sorting result: 1 4 5 6 7 8 9  
            1,          ,Current sorting result: 1 4 5 6 7 8 9 
 분할 간격 이 1 일 때 정렬 을 직접 삽입 합 니 다.
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기