クイックソート、挿入ソート、バブルソート、マージソート

クイック:O(N 2

真正正确的快速排序:
書式#include <iostreamの> 
の#include <cstdioを>
 使用して 名前空間はstd;
INT [ 100 ]。
/ * ボイドスワップ(INT A、INT B){ 
    int型TMP。
    TMP = A; 
    = B; 
    B = TMP。
} * / 
ボイドクイック(intです左、int型右){
     int型I、J、Tは、
    もし(左> 右)
         を返しますINTの TEMP = [左]。
    I = 左; 
    J = 右。
    同時に(iは< j)を{
         ながら([J]> TEMP && I < J)
            J - 
        [i]は = [j]を。
        一方、([i]が<TEMP && iが< j)を
            I ++ 
        [j]は = [I]。
    } 
    [I] = TEMP。
    クイックソート(左、I - 1 )。
    クイック(I + 1 、右)。
} 
int型のmain(){
     int型NUM。
    cinを >> NUM。
    以下のためのint型 I = 1; I <= NUM; iは++ 
    scanf_s(" %のD "、および[I])。
    クイックソート(1 、NUM)。
    int型 I = 1 ; I <= NUM iが++ 
        COUT << [I] << ENDL。
    リターン 0 ; 
}

挿入ソート:O(N- 2

#include <iostreamの> 
する#include <cstdioを> 
使用して名前空間STD、
INT A [100]; 
int型のmain(){ 
    int型N-; 
    CIN N - >>; 
    のための(INT I = 0、I <N - 、Iは++)
        CIN >> A [I]、
    のために(INT I = 1; I <N - 、Iは++){//私はそれが最初のいくつかの数字が比較さであることを意味
        IF([I] <[-I 1]){ 
            int型J = I- 。1; 
            INT X = A [I]; 
            一方、(Jは> = 0 && [J]> X){ 
                [J] = [Jの+ 1]; //数が数後により大きい前ケースを見つける
                      後の図移動後。
                J ,; 
            } 
            A [+ J. 1] = X; //インサートの数を比較
        } 
    } 
    のための(I = 0 int型、I <N - 、I ++)は
        COUT << [I] << ENDL、
    0を返します;

 マージソート:O(nlogn)

書式#include <iostreamの> 
の#include <ベクトル> 
 使用して 名前空間はstdを、
ボイドマージ(ベクトル< INT >&ARR、int型の L、INT半ば、INT R){
     intは *ヘルプ= 新しい INT(R-L + 1 )。    
    int型 P1 = L、P2 =ミッド+ 1、I = 0 ;    
    一方(P1 <=ミッド&& P2 <= R){     
        ヘルプ[I ++] =のARR [P1]> [P2] ARR?ARR [P2 ++]:ARR [P1 ++ ]; 
    }     
    一方(P1 <= MID)     
        ヘルプ[I++] =のARR [P1 ++ ]。    
    一方(P2 <= R)     
        ヘルプ[I ++] =のARR [P2 ++ ]。 
    以下のためにint型 iは= 0 ; I <R-L + 1 ; iは++ 
    {         
        ARR [L + I] = ヘルプ[I]。
    } 
} 
ボイド sortprocess(ベクトル< INT >&ARR、INT L、INT R)
{     場合(L < R){    
     int型ミッド= 1 +((RL)>> 2)。  //   (L + R)/ 2    
 +     sortprocess(ARR、L、MID)。    
    sortprocess(ARR、ミッド1 、R)。    
    (ARR、L、中、R)マージ。}} 
ボイドマージ(ベクトル< INT >&ARR、int型の L、INT R){
     場合(arr.size()< 2 リターンsortprocess(ARR、L、R);} 
 int型のmain(){     
    ベクトル < INT > ARR。    
    int型 nは、一時; cinを>> N;  // 输入N个数     
    ためint型 i = 0 ; iがn <; iは++ 
    {     
        CIN >>温度を、  // 输入数据    
        arr.push_back(TEMP)。    
    }      
    マージ(ARR、0、arr.size() - 1 )。 
    以下のためにint型私= 0 ; i)は、(arr.size <; Iは++ 
        COUT << ARR [I] << ENDL。
    システム(一時停止)。    
    リターン 0 ; 
}

 

おすすめ

転載: www.cnblogs.com/sweet-ginger-candy/p/11605397.html