--- --- 내용이 시작 복원
삽입은 종류의 소스 데이터가 정렬되어있는 경우에 정렬됩니다. 안정화 된 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 }