거품 정렬
위한 ( int로 I = 2 ; 나는 <= N; 내가 ++ ) J在前난在后 대 ( INT J = 1 ; J <= NI, J ++ ) 경우 (a [J] < A [I]) 스왑 (a [I], A [J]);
2 : 빠른 정렬
사용법 #include <iostream> 사용 스페이스 성병; int로 A [( INT ) 1E5 + 5 ]; 보이드 예 : quick_sort ( INT의 Q [], INT의 L, INT R) //先排序再递归 { 경우 (L> = R)의 리턴 ; INT (X) = Q [L] 난 = 1- 1 , J = R + 1 ; 동안 은 (i < J)를 { 수행 ++ I 단계; 반면 (Q [I] < X); 할 j--; 반면 (Q [J]> X); 있는 경우 는 (i < J)를 스왑 (Q [I], Q [J]); } 예 : quick_sort (A, L, J); 예 : quick_sort (a, J + 1 , R); } INT 의 main () { INT의 N; CIN >> N; 위한 ( int로 I = 1 ; 나는 = <N; ++ i가 ) CIN >> A [I]; 예 : quick_sort (a, 1 , N); 위한 ( int로 I = 1 ; i가 <= N; ++ i가 ) COUT << A [I] << ' ' ; 반환 0 ; }
세 : 일종의 병합
사용법 #include <iostream> 사용 스페이스 성병; int로 A [( INT )을 1E5 + 5 ], TMP [( INT ) 1E5 + 5 ]; 보이드 merge_sort ( INT의 Q [], INT의 L, INT의 R) { 경우 (L> = R)의 리턴 ; int로 중간 = L + R >> 1 ; merge_sort (Q, L, MID), merge_sort (Q 중간 + 1 , R); INT의 K = 0 , I = 1, 중간 J = + 1 ; 동안 (ⅰ <= j를 중간 && <= R) 의 경우 (Q [I] <Q [J]) TMP [K ++ = Q [I ++ ] 사람의 TMP [K ++ = Q [J ++ ] 그동안 TMP (I는 = MID를 <) [K ++ = Q [I은 ++ ] 그동안 (J <= R & LT) TMP는 [K는 ++] = Q는 [J는 ++ ] 에 대해 ( int로 난 = L은, J = 0 , I는 <= & lt; 화학식 I가 ++ J ++) Q는 [I]는 = TMP [J]를 // 에러가 발생하기 쉬운 TMP를 배열 범위는 0부터 시작, q는 L 및 R LT이다 } INT 의 main () { INT N-; CIN을 >> N-] 대 ( INT I = 1. ; I <= N-; I는 ++ ) CIN >> A [ I] merge_sort (A, 1. , N-) 대 (int로 I = 1 난 ++; 나는 <= N ) COUT을 << A [I] << ' ' ; 반환 0 ; }