ソート(バブリング、速い放電、マージ)

バブルソート

以下のためにint型 I = 2 ; iが<= N; iは++ )J在前、I在后
     のためのINT J = 1 ; J <= NI; J ++ 場合([J] < [i])と
               スワップ(A [I]、[J])。

2:クイックソート

書式#include <iostreamの> 使用して名前空間はstdを、
INT [(INT)1E5 + 5 ]。
ボイド quick_sort(INT Q []、INT L、INT R)//先排序再递归
{ 場合(L> = R)リターン;
    INT X = Q [L]、I = 1- 1、J = R + 1 しばらく(私は< j)を
    { 行う ++私を。一方、(Q [i]の< X)。
        やります j--; 一方、(Q [J]> X)。
        あれば(私は< 
            スワップ(Q [I]、Q [J]を)。

 
    
         j)を
    } 
    quick_sort(L、j)は、
    quick_sort(J + 1 、R)。
} 
int型のmain()
{ 
     int型N; 
     cinを >> N;
     以下のためにint型 i = 1 ; iが= <N; iは++ 
        CIN >> [I]。
     quick_sort(1 、N)
     以下のためにint型 i = 1 ; iが<= N; iは++ 
        COUT << [I] << '  ' 



    リターン 0 ; 
}

3:マージソート

書式#include <iostreamの> 使用して名前空間はstdを、INT [(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 しばらく(I <=ミッド&& jの<= R)
     の場合

 


    (Q [I] <Q [J])TMP [Kが++] = Q [I ++ ];
     他の TMP [K ++] = Q [J ++ ];
     一方(Iは<= MID)TMP [K ++] = Q [I ++ ];
     一方(J <= R&LT)TMP [K ++] = Q [J ++ ];
     のためのint型 Iは、L、J = = 0を Q [I] =;私は= R&LT <J ++、Iは++)は、TMP [J]を; //エラープローン、TMP配列の範囲は0から開始し、qはLとR&LTである
} 
int型のmain()
{ 
    int型N-、
    CINを >> N-;
     のためのINT I = 1 ; I <= N; I ++は
        CIN >> [ I]; 
    merge_sort(A、1 、N-);
     のためのint型 i = 1 ; iが++; iが<= N 
        COUT << [I] << '  ' リターン 0 ; 
}

 

おすすめ

転載: www.cnblogs.com/zwx7616/p/10987588.html