Implementação de Quicksort

Boa tarde!
Estou tentando implementar um algoritmo de Quicksort , mas não estou conseguindo , alguém poderia me ajudar a encontrar o erro nesse código.

Obs:Ainda não tenho muita experiência em programação , estou começando agora.

#include<stdio.h>
#define Max 5

int partition(int*,int,int);//assinatura da função


void quicksort(int *v,int start, int end){

if (start >= end) return;

    int pivot = partition(v,start, end);

    quicksort(v,start, pivot - 1);
    quicksort(v,pivot + 1, end);

}
int partition(int *v,int start,int end){

int aux,k=start;
int fim =end;

    for(int i=start;i<fim;i++){

        while(v[i]<=v[fim]){

            k++;
            aux=v[k];
            v[k]=v[i];
            v[i]=aux;
            
        }
    }

    aux=0;
    aux=v[k];
    v[k]=v[fim];
    v[fim]=aux;        

}
void main(){

int vet[Max];

for(int i =0 ; i<Max; i++){

    scanf("%d",&vet[i]);
}
quicksort(vet,0,Max);

for(int i =0 ; i<Max; i++){

    printf("%d",vet[i]);
}
}