经典的快速排序实现

void swap(int *a, int *b)
{ 
  int t=*a; *a=*b; *b=t; 
}
 
void quicksort(int arr[],int beg,int end)
{
        if (end  >= beg + 1) 
        {
                int piv = arr[beg], k = beg + 1, r = end;
 
                while (k < r) 
                {
                        if (arr[k] < piv) 
                                k++;
                        else
                                swap(&arr[k], &arr[r--]);
                }
                if (arr[k] < piv){
 
                        swap(&arr[k],&arr[beg]);
 
                        quicksort(arr, beg, k);
                        quicksort(arr, r, end);                    
                }else {
                        if (end - beg == 1)
                                return;
 
                        swap(&arr[--k],&arr[beg]);
                        quicksort(arr, beg, k);
                        quicksort(arr, r,   end);                  
                }
        }
 
}

你可能感兴趣的:(C++,c,快速排序,c/c++,经典)