Ragazzi io ho il seguente codice(partizionamento di un array)

Praticamente devo fare la versione iterativa dell'algoritmo di quick sort:

codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #define DIM 10
    /* Inizio definizioni */
     
    void swap(int *a, int *b);
    void print_array(int *bar, int enne2);
    void random_array(int *, int);
    void partizione(int *, int, int,int);
     
     
    int main(void){
            int array[DIM], boh=0, boh2=0; srand(time(NULL));
            random_array(array, DIM);
            partizione(array, 0, DIM-1,(DIM/2));
            print_array(array,DIM);
           
    }
     
     
    /* Inizio funzioni */
     
     
     
    void partizione(int *foo, int left, int right, int middle){
            /* Partiziona un array secondo un pivot*/
            int pivot = foo[middle], i = left, j = right, temp;
            /* Trova i primi candidati da scambiare*/
            while((i<j)&&(foo[i]<=pivot))i++;
            while((i<j)&&(pivot<foo[j]))j--;
            if(foo[j]>pivot) j--;
            printf("Il pivot è %d\n", pivot);
            while(i<j){
                    printf("Scambiamo foo[%d] = %d con foo[%d] = %d \n", i, foo[i], j, foo[j]);
                    swap(&foo[i], &foo[j]);
                    i++;j--;
                    while(foo[i]<=pivot){i++;}
                    while(foo[j]>pivot){j--;}
            }
           
           
    }
     
     
    void swap(int *a, int *b){
            int t;
            t = *a;
            *a = *b;
            *b = t;
    }
     
    void random_array(int *foobar, int enne){
            /* Genera vettore random */
            int i;
            for(i=0;i<enne;i++){
                    foobar[i] = (rand()%10)+1;
            }
            print_array(foobar, enne);
           
    }
     
    void print_array(int *bar, int enne2){
            int i;
            for(i=0;i<enne2;i++){
                    printf("%d\t", bar[i]);
            }
            printf("\n");
    }
Purtroppo non partiziona completamente, qualcuno può aiutarmi, grazie