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;
}

 

posted @ 2010-01-12 20:46  wlu  阅读(274)  评论(0编辑  收藏  举报