직접 삽입 정렬 / 이진 삽입 정렬 / 쉘 종류

--- --- 내용이 시작 복원

삽입은 종류의 소스 데이터가 정렬되어있는 경우에 정렬됩니다. 안정화 된 O 시간 복잡도 (N ^ 2)

직접 삽입 정렬

다음 코드는

공용  정적  INT [] insertSort ( INT [] A) {
 IF (A ==  || a.length는 == 0 ) {
 반환 를}
 에 대해 ( INT I = 1., I는 a.length를 <; I는 ++ ) { 

 ( INT J = -I 1]. J는> = 0 && A [J]를> A는 [+ J. 1] J, ) 
  스왑 (A, J, J + +1); // 전방 만 이상 교환 채우는 
} 
반환; }

반 전제가 정렬됩니다 원래 배열에 삽입

 

공용  정적  INT는 [] subInser ( int로 {A는 [])
         에 대해 ( int로 ; 나는 a.length <; I = 1 난 ++ ) {
             INT의 온도를 = A [I];
            INT 낮은 = 0, 높이 = I - 1 ;
            INT 중간 = -1 ;
            반면 (로우 <= 높음) { 
                중간 = + 저 (하이 - 로우) / 2 ;
                경우 (a [미드]> TEMP) { 
                    높은 = 중간 - 1 ; 
                } 다른 { //동일한 요소뿐만 아니라, 위치 후에 삽입                 
                    = 낮음 MID + 1. ; 
                } 
            } 
            에 대해 ( INT의 - J = I (1)]. J는> = 로우, J, ) { 
                A [J . + 1] = ; A [J]를 
            } 
            A [낮음] = TEMP; 
        } 
        리턴 들 a 
    }

쉘 정렬

D 상수 세그먼트 더이상 고정 반 수는 1까지 감소되지

1 개   공용  정적  INT [] 셸 정렬 ( INT [] a) {
 2          의 INT D = a.length / 2 ;
3          INT의 TMP;
4          동안 (d> 0 ) {
 5               ( int로 = I (D)를, I는를 <a.length; 내가 ++ ) {
 도 6                  의 tmp = A [I];
7                  의 INT J = I;
8                  동안 (j> D && TMP <A [J- D]) {
 9                      A [j]가 = A [J- D]
10                      J- = D;
11                  }
 12                 A [J]를 = TMP를;
13              }
 14              D = D / 2 ;
15          }
 16       리턴   a 및
17      }

 

추천

출처www.cnblogs.com/bowenqianngzhibushiwo/p/11619895.html