quick sort, 第一次试着用templete变小程序

代码
#include  < stdio.h >
#include 
< stdlib.h >
#ifdef _DEBUG
#define  DEBUG_NEW new (_NORMAL_BLOCK, THIS_FILE, __LINE__)
#endif

#ifdef _DEBUG
#define  new DEBUG_NEW
#undef  THIS_FILE
static   char  THIS_FILE[]  =  __FILE__;
#endif

#ifdef _DEBUG
#ifndef ASSERT
#define  ASSERT  assert
#endif
#else     //  not _DEBUG
#ifndef ASSERT
#define  ASSERT
#endif
#endif    //  _DEBUG

template
< typename T >
int  _partition(T  * A,  int  p,  int  r)
{
    T x 
=  A[r];
    
int  i  =  p  -   1 ;
    
for  ( int  j  =  p; j  <=  r  -   1 ++ j)
    {
        
if  (A[j]  <=  x)
        {
            i
++ ;
            T temp 
=  A[j];
            A[j] 
=  A[i];
            A[i] 
=  temp;
        }
    }
    T temp 
=  A[i  +   1 ];
    A[i 
+   1 =  A[r];
    A[r] 
=  temp;
    
return  i + 1 ;
}



template
< typename T >
void  quick_sort(T  * A,  int  p,  int  r)
{

    
if  (p  <  r)
    {
        
int  q  =  _partition(A, p, r);
        quick_sort(A, p, q 
-   1 );
        quick_sort(A, q 
+   1 , r);
    }
}

int  main()
{
    
    
int   i;
    
int  N  =   20 ;
    
double   * =  ( double   * )malloc( sizeof ( double *  N);
    
for  (i  =   0 ; i  <  N; i  ++ )
    {
        A[i] 
=  rand()  %   100   +   0.25 ;
        printf(
" %4f\t " , A[i]);
    }
    quick_sort(A, 
0 , N  -   1 );
    
    printf(
" \n--------------\n " );
    
    
for  (i  =   0 ; i  !=  N; i ++ )
    {
        printf(
" %4f\t " , A[i]);
    }
    printf(
" \n " );
    free(A);A 
=  NULL;
}

 

你可能感兴趣的:(sort)