정렬 (버블 빠른 방전, 병합)

거품 정렬

위한 ( 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 ; 
}

 

추천

출처www.cnblogs.com/zwx7616/p/10987588.html