著名的快数排序Quick-sort

 
#include  " stdafx.h "
#include 
< iostream >

int  Partition( int  A[],  int  p,  int  r)
{
    
int x = A[r];//选择x=A[r]作为主元
    int i = p -1;
    
for(int j = p; j <= r-1; j++)
        
if(A[j] <= x)//假设A[i]大于x,那么就不用移动了。第二个语句swap()将x移动到最左方,所以比x大的数都在右方。
        {            //假设A[j]小于x,因为A[i]的下标i始终小于等于j,那么说明A[i]是大于x的值,否则便是被移动了。
            i = i+1;//这样第一个函数swap()将把大于x的A[i]与小于x的A[j]互相交换位置。
           std::swap(A[i], A[j]);
        }

    std::swap(A[i
+1], A[r]);

   
return i+1;

}


void  Quick_Sort( int  A[],  int  p , int  r)
{
    
if(p < r)
    
{
        
int q = Partition(A, p, r);
        Quick_Sort(A, p, q
-1);
        Quick_Sort(A, q, r);
    }


}



int  main( int  argc,  char *  argv[])
{   

    
int C[12= {100,4,8,7,6,32,5,4,8,1,2,1};
    Quick_Sort(C, 
011);
    
for(int i = 0; i <= 11; i++)
        std::cout
<<C[i]<<" ";
    
return 0;
}

你可能感兴趣的:(c,include,iostream)